启动屏幕,其行为完全像启动图像
为了让iPad Pro在发布时使用全分辨率,我们必须使用启动屏幕文件 。
我之前从未使用过启动屏幕XIB / Storyboard,因为我的应用程序向后兼容iOS 7.通常,我使用LaunchImage资产目录为每个设备维度和启动方向定义特定的静态图像。
现在我正在试图定义一个像LaunchImage资产目录一样的启动屏幕文件,但是我正在努力做到这一点。 尤其是:
1)根据设备的确切尺寸,我没有看到select不同的UIImage的好方法,例如向iPhone 4S用户显示一个图像,向iPhone 5用户显示另一个图像。
2)我没有看到为iPad的纵向和横向视图select不同的UIImage的方式。 大小类似乎认为,iPad的纵向和iPad的景观是“规则”的宽度和“常规”的高度,所以任何UIImage将出现在iPad的肖像也将出现在iPad景观。
系统在启动应用程序之前加载启动文件,该应用程序对其内容可能包含一些限制(其中一些可能会强制您返回到静态图像文件):
1.该应用程序尚未加载,因此视图层次结构不存在,系统无法调用您可能在应用程序中使用的任何自定义视图控制器设置代码(例如,viewDidLoad)
2.你只能使用标准的UIKit类,所以你可以使用UIView或UIViewController而不是自定义的子类。 如果您尝试设置自定义类,则会在Xcode中收到非法configuration错误。
3.启动文件只能使用基本的UIKit视图,如UIImageView和UILabel。 你不能使用UIWebView。
4.如果你正在使用故事板,你可以指定多个视图控制器,但是也有一些限制。 例如,您可以将视图控制器embedded到导航栏或标签栏控制器中,但更复杂的容器类(如UISplitViewController)不起作用(至less现在还不行)。
5.定位启动文件目前似乎没有任何效果。 基本本地化总是使用,所以你可能会希望避免在启动屏幕上的文字。
6.您不能为iPad和iPhone指定不同的启动文件。 这可能是一个问题,如果你有这些设备的显着不同的接口,因为只有很多你可以做自动布局和大小类。
请注意,如果您正在部署到iOS 7,则仍然需要包含静态启动图像文件。 您可以同时包含启动映像文件和静态启动映像。 诸如运行iOS 8的iPhone 6等设备将使用启动映像文件,而iOS 7设备将回退到启动映像。
-
首先创build所有的图像。 然后,打开您的资产目录,并右键单击 – >应用程序图标和启动图像 – >新的iOS启动图像。 这将创build一个文件来拖动所有的文件。 去做。 将资产命名为“启动”。
-
使用command-n创build一个新的启动屏幕故事板。 selectiOS – >用户界面 – >启动屏幕。 调用文件“启动屏幕”。
-
在启动屏幕故事板中,select视图控制器的视图
[ 。
- 从右侧ba底部的对象库中findUIImageView占位符,并将其拖入启动屏幕视图。
- 现在,select故事板中的图像视图,然后从资产目录中input图像的名称。
- 控制从UIImageView拖动到它的容器视图以设置自动布局约束,如下所示:
-
可选…如果你想在故事板上看起来不错,请select视图并执行选项-cmd- =来更新UIImageView的框架。
-
转到您的info.plist,然后为“启动屏幕界面文件基本名称”键input故事板的名称(“启动屏幕”)
-
清理并运行。
希望有所帮助,我没有忘记任何东西!
您可以使用“大小类别”为不同的屏幕尺寸指定不同的图像,但这不能帮助您处理iPhone 4S和iPhone 5屏幕的情况
这是iPad的解决scheme,可以工作,
对于iPhone,您可以使用大小类,我不在这里发布该解决scheme。
解决scheme是将您的启animation面图像分解为组件,并使用约束来处理肖像与风景的图像。
这是我如何做的一个例子。
为iPad创build一个启动故事板
UILaunchStoryboardName〜ipad(UILaunchStoryboardName〜iphone)
以我的情况2048×1536的风景图像
我把景观图像切成了三幅
- 中心1536×1536
- 左256×1536
- 正确的256×1536
在发布故事板上,我使用以下约束创build了3个图像视图
中心片:
- 钉到顶部和底部,
- 在superview中心,
- 保持纵横比
左右片:
- 0尾随/引导到中心,
- alignment顶部,
- 等高
然后,对于左侧和右侧的视图模式,我将其从方面填充更改为右下angular和左下angular(对我来说最合适)
我知道这似乎是矫枉过正的东西应该是简单的。 我使用启动故事板来启动图片的原因是为了减less应用程序的大小。 我需要更less的启动图像,我可以使用JPEG而不是PNG