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

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


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

如何实现app启动到程序主页只显示一张默认图片(避免出现图片跳动或白一下的效果)_第2张图片
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里面复制过来。


如何实现app启动到程序主页只显示一张默认图片(避免出现图片跳动或白一下的效果)_第3张图片
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

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


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

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

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