设置启动页图片

因产品需求,要在圣诞节和元旦期间分别用不同的图片作为启动页,元旦过后还原为之前的图片。一番尝试之后,虽没有很好的完成需求,但做以下总结,希望对读者有所帮助。


普通设置启动页
•方式一 用Images.xcassets
设置启动页图片_第1张图片
图一.png

将Launch Screen File 栏中的LaunchScreen删除,然后 点击 图中箭头所指,


设置启动页图片_第2张图片
图二 .png

点击Migrate之后去到Images.xcassets文件中会看到


设置启动页图片_第3张图片
图三.png

此时拖入准备好的相应尺寸的图片,运行即可,如果在某机型上不显示,请检查图片是否缺少对应的尺寸。

注:如不显示,可先执行Clean,在将模拟器或真机上的程序卸载后重新安装

•方式二 通过LaunchScreen.storyboard设置

如图一所示,不点击Use Asset Catalog且Launch Screen File 栏中选中LaunchScreen.storyboard
然后在LaunchScreen.storyboard的

设置启动页图片_第4张图片
图四.png
勾选之后
启动页即可在LaunchScreen.storyboard中设置,可用label等控件自己布局,亦可直接用图片。所用图片不必各种机型的尺寸都需要,一张即可。但是!!此方法只适用于支持iOS8和以后的系统,如果支持iOS7的话,测试是没有问题,但在提交到App Store时会报以下错误:
设置启动页图片_第5张图片
图五.png

注:如不显示,需要Clean 或将模拟器中程序删除重新安装。亲测有效!


为完成文章开始所说需求,做了以下尝试:
首先以上两种方式都不使用,测试发现程序在屏幕上下各留出黑框。所以,再不使用Images.xcassets的情况下LaunchScreen.storyboard 的 use as Launch Screen 一定要选中。

想要根据时间来设置启动页,只能在代码中操作,于是在didFinishLaunchingWithOptions方法中进行操作:

 UIView *launchView = [[[NSBundle mainBundle]loadNibNamed:@"LaunchScreen" owner:nil options:nil]firstObject];
    
    launchView.backgroundColor = [UIColor redColor];
    launchView.frame = self.window.frame;
    [self.window addSubview:launchView];
    
    UIImageView *imgView = [[UIImageView alloc]initWithFrame:launchView.bounds];
    imgView.image = img;
    [launchView addSubview:imgView];
    
    
    [UIView  animateWithDuration:3.0 animations:^{
        launchView.alpha = 0.0;
        
    } completion:^(BOOL finished) {
        [launchView removeFromSuperview];
    }];

但是效果差强人意。以为LaunchScreen.storyboard是在程序一启动就加载的,所以程序一启动会显示白屏(未在LaunchScreen.storyboard中设置图片),然后再出现代码所写效果。
不过看了几个大厂的app,他们实现启动页之后的广告页也是这个思路!


希望文章对你有所帮助,如有大神有更完美的解决方案请多多赐教。

你可能感兴趣的:(设置启动页图片)