iOS 将storyboard转为图片

一、背景

目前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;
}

之后就可以拿着这张图片做相关的需求!

你可能感兴趣的:(iOS 将storyboard转为图片)