如何实现app启动到程序主页只显示一张默认图片(避免出现图片跳动或白一下的效果)

1.一般程序从启动到程序主页,都会有一个中间splash页面(该页面主要是来判断升级,初始化数据请求等)
a.程序启动会马上显示程序默认图片LaunchImage(还没进第一个viewcontroller就会显示)
如下方法可以设置默认图片(Assets)


Paste_Image.png

Paste_Image.png

b.进入splash页面后。
1.1如果不指定splash页面背景图片,会默认显示空白背景页面,进入首页前就会有白一下的效果。(如果进入主页前有多个vc,那每个vc都要修改)
1.2如果直接用Assests集合,一张图片设置背景图片。这样进入splash页面,这张默认图片会有跳动和拉伸效果(应该是格式不适应导致)

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, HHBWIDTH, HHBHEIGHT)];
imageView.image = [UIImage imageNamed:@"LaunchImage"];
[self.view addSubview:imageView];

原因:既然自适应不行,我们就手动指定
二.解决:
1.工程里添加各种尺寸的背景图片,这4张图片都是从上图assests里面复制过来。


Paste_Image.png

2.在splash页面添加各自尺寸的背景图片(我这里的splah页面是LaunchViewController)

//判断设备的屏幕尺寸
#define IS_SCREEN_40_INCH ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_SCREEN_35_INCH ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_SCREEN_47_INCH ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define IS_SCREEN_55_INCH ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)

+ (void)addDefaultImageWithVC:(UIViewController*)vc
{
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, HHBWIDTH, HHBHEIGHT)];
    NSString *imageName = nil;
    if(IS_SCREEN_55_INCH){
        imageName = @"launchImage55";
    }else if(IS_SCREEN_35_INCH){
        imageName = @"launchImage35";
    }else if(IS_SCREEN_40_INCH){
        imageName = @"launchImage40";
    }else{
        imageName = @"launchImage47";
    }
    imageView.image = [UIImage imageNamed:imageName];  //   LaunchImagedefe  LaunchImage
    [vc.view addSubview:imageView];
}

//  LaunchViewController.m
@implementation LaunchViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self getAdImageProcedure];
}
- (void)getAdImageProcedure
{
    [HuConfigration addDefaultImageWithVC:self];
     //其他动作

}

@end

效果在进入主页面前,都只显示这张图片。


Paste_Image.png

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,136评论 1 32
  • 今天晚上的时候我去找妈妈玩,一会儿,爸爸就来了,他就来接我去中医院广场玩儿。 我发现我自己来晚了,而且...
    郝一鼎阅读 354评论 0 0
  • 2018年2月26日 星期一 晴 弟弟曾经给别人做媒,把姨丈家的小姨子介绍给了自己的好哥们,这件事真是...
    残阳物语阅读 683评论 28 31