一、背景
目前launchimages
已被苹果完全废弃,都使用LaunchScreen.storyboard
作为启动图,其目的就是为了启动图能更好的适配不同尺寸屏幕的手机。为了给用户更好的启动体验
,我们再也不能单纯的用一张图作为启动图。
目前可行的做法大致有两种(有更多的,欢迎推荐):
1、先根据屏幕尺寸设计不同的启动图,开发再根据屏幕尺寸创建多个
LaunchScreen.storyboard
。2、把启动图作为一个页面开发,分成不同的元素。
二、需求 & 场景
以启动图为背景图,实现某些需求的场景:
1、首次打开APP,需要以启动图为背景,显示同意隐私政策的弹窗。
2、每次打开APP后,在启动图将要结束时,以启动图为背景,展示启动图广告。要从启动图
无缝切换
到广告图。3、从启动图切换到启动轮播图。很多APP做启动之后的轮播介绍图,如果轮播图的资源是本地图片还好;但我们的需求启动轮播图要根据接口返回显示,这样从接口请求到图片加载完成,中间的空荡期,就会显得很突兀,产品上也要求从启动图无缝切换到轮播图。
以上情况,我就需要以启动图为图片,或作为背景
、或作为过渡页
、或作为placeholderImage
。
三、解决方法
具体做法就是把LaunchScreen.storyboard
转为图片,参考文章(原先的文章不是Markdown模式,现在换一下):
/*
获取启动图
*/
- (UIImage *)getLaunchScreensImage{
CGSize size = CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LaunchScreensId"];
vc.view.size = size;
UIGraphicsBeginImageContextWithOptions(size, YES, 0.0f);
[vc.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
之后就可以拿着这张图片做相关的需求!