ios8以后设置启动图
Last updated
Last updated
启动图片是iOS加载App的时候系统响应的直观呈现。近几年,随着屏幕尺寸的增多,制作相应的静态图片就变成一件十分让人头疼的事。常用机型启动图片的尺寸列举:
型号 | 尺寸 |
iPhone 4s | 640 x 960 |
iPhone 5 | 640 x 1136 |
iPhone 6 & 7 | 750 x 1334 |
iPhone 6Plus & 7Plus | 1242 x 2208 |
利用auto layout 和size classes的优势,一个单独的NIB或storyboard文件在runtime时可以自动的去创建启动图片集。这样支持多尺寸屏幕时,无需提供上面列举的不同尺寸的静态图片.
1.创建.xib/.storyboard 文件
Xcode6在创建新工程时默认添加了一个LaunchScreen.xib文件。对一个已经存在的工程可以用Launch Screen 模板创建一个新的文件。
这一步将会在工程中添加一个NIB文件(在Xcode7里,默认添加的是LaunchScreen.storyboard文件),可以在初始化的启动屏上添加视图或者视图控制器。
2.设置plist文件 这一步将会把键 Launch screen interface file base name(UILaunchStoryboardName)加到应用的plist 文件中
3.自定义布局
在Interface Builder中可以对启动视图进行布局.将autolayout和size classes作为必选项,可以为不同的屏幕创建匹配的图片。Xcode模板提供的风格,只是对app的名称和所有权进行了布局,可以添加或删除模板上的控件来自定义加载界面.
默认模板效果图:
系统在启动app之前装载启动文件,在这个过程中可能对app包含的一些文件产生限制:
1.由于app还没装载完毕,一些视图的层级结构还不存在,系统不能调用app中任何自定义的视图控制器去启动代码.因此仅仅能使用标准的UIKit类,所以可以用UIView或者UIViewController,自定义的子类则不可以。如果尝试着去设置子类,将会得到一个“配置无效”的错误。
2.启动文件仅仅能够用基础的UIKit视图,像UIImageView 和UILabel,不能使用 UIWebView。 如果你用了storyboard,你可以指定多个视图控制器,但是仍旧有一些限制。例如,你可以在navagation或者tab bar controller嵌入几个视图控制器,但是一些更复杂的类,像UISplitViewController 并不起作用 (至少现在如此).
另外,尽管苹果文档中并没有清楚地说明,但需要的启动图片在runtime时被生成了。在WWDC 2014 Platform State of the Union上被简短的提到过。可以通过App在真机或者模拟器上生成的文件夹证实。被特定设备需要的启动图被缓存在Library/Caches/LaunchImages。