In order to get iPad Pro to use full resolution at launch, we have to use a Launch Screen File。
我以前从未使用过启动屏幕XIB/Storyboard,因为我的应用程序向后兼容iOS7。通常,我使用LaunchImage asset catalog为每个设备尺寸和启动方向定义特定的静态图像。
现在,我试图定义一个启动屏幕文件,其功能类似于LaunchImage Assets 目录,但是我正在努力做到这一点。特别是:
1)我看不到根据设备的确切大小来选择其他UIImage的好方法,例如向iPhone 4S用户显示一张图像,向iPhone 5用户显示另一图像。
2)我看不到为iPad Portrait和iPad Landscape View 选择不同的UIImage的方法。尺寸类似乎认为iPad Portrait和iPad Landscape均为“Regular”宽度和“Regular”高度,因此,将在iPad Portrait上显示的任何UIImage也会在iPad Landscape中显示。
最佳答案
系统在启动应用程序之前会加载启动文件,这会对其包含的内容产生一些约束(其中一些约束可能会迫使您返回静态镜像文件):
1,该应用程序尚未加载,因此 View 层次结构不存在,系统无法调用您在该应用程序中可能具有的任何自定义 View Controller 设置代码(例如viewDidLoad)
2.您只能使用标准的UIKit类,因此可以使用UIView或UIViewController,而不能使用自定义子类。如果尝试设置自定义类,则会在Xcode中收到“非法配置”错误。
3.启动文件只能使用基本的UIKit View ,例如UIImageView和UILabel。您不能使用UIWebView。
4.如果使用 Storyboard ,则可以指定多个 View Controller ,但同样存在一些限制。例如,您可以将 View Controller 嵌入导航或标签栏 Controller 中,但是更复杂的容器类(例如UISplitViewController)不起作用(至少目前还不行)。
5.本地化启动文件目前似乎没有任何效果。始终使用基本本地化,因此您可能要避免在启动屏幕上显示文本。
6.您不能为iPad和iPhone指定不同的启动文件。如果这些设备的接口(interface)截然不同,则可能会出现问题,因为自动布局和尺寸类别只能做很多事情。
请注意,如果您要部署到iOS 7,则仍然需要包括静态启动镜像文件。您可以同时包含启动镜像文件和静态启动镜像。运行iOS 8的iPhone 6等设备将使用启动镜像文件,而iOS 7设备将回退到启动镜像。