要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
。
以下是如何将 LaunchScreen
集成到您的应用中的说明。
这个类及相关示例利用了 Xcode 6 使用启动屏幕故事板的能力,而不是使用一套默认图片。它依赖于新的 Info.plist 键 UILaunchStoryboardName
。
尽管 Apple 建议不要使用除应用初始无内容边框外的所谓“启动画面”,但在应用中显示带有某种图形(可能是动画的)的启动画面是一种常见的做法,通常还会有一些指示正在进行中的活动(例如,一个旋转的活动指示器)。
传统上,要提供任何形式的叠加、长时间显示的启动画面,您必须实例化一个视图,用某种内容填充它,然后将其显示在您的初始视图之上,最后再移除它。这个过程的机制并不复杂,但难点在于您想要填充这个视图的内容不仅仅是一个纯色。这就是为什么会有许多不同版本和大小的“Default.png”(不同设备和屏幕大小的繁琐名称列表)。随着 iPhone 6 和 6+ 的推出,这个噩梦变得更大。
这就是 Xcode 6 中可用的 Launch Screen XIBs 的出现。这些 XIB 允许您布局系统将在加载您的应用时显示的初始屏幕。您可以使用几乎所有 UIKit 元素,包括您想要的活动指示器(尽管您无法以编程的方式控制它),并且可以使用自动布局来排列所有内容。因此,完全消除了对多个“Default”图片的需求。
我们为什么不能以编程方式使用那个 XIB 文件呢?它只是一个包含其他 UIKit 元素的 UIView。而且,没有理由我们不能将其加载并动态地向视图中添加 UIKit 元素。但难题在于,我们不会直接从 XIB 中影响系统显示的内容。相反,我们将实例化 XIB,将其视图插入到我们的故事板中的另一个 UIViewController 的视图中,然后对其进行操作。
使所有屏幕尺寸都能工作的小技巧是(我们假定你在你的Storyboard中使用尺寸类),你必须在你的Storyboard中加入一个类为LaunchScreenViewController的UIViewController。你必须为这个场景分配一个Storyboard标识符。这里有两种初始化方法;第一种假定Storyboard ID为LaunchScreenViewController
,第二种则将ID作为参数,如果你愿意使用其他的ID。通过在你的Storyboard中添加一个场景,并使用尺寸类,你可以确保你的Launch Screen XIB视图将按需调整大小以填充屏幕。
一旦安装了LaunchScreen,它的使用就相当简单。
你将需要一个XIB文件用于启动屏幕。
将.h文件添加到适当的位置,以便在需要操作和显示自定义启动画面时使用。
#import "LaunchScreenController.h"
将UIViewController拖拽到你的Storyboard中。
LaunchScreenViewController
LaunchScreenViewController
实例化一个LaunchScrenViewController
LaunchScreenViewController *launchScreenVC = [[LaunchScreenViewController alloc] initFromStoryboard:self.storyboard];
UIImage *snapshot = [launchScreenVC snapshot];
UIActivityIndicatorView *spinner = ...;
UIView *view = launchScreenVC.view;
[view addSubview:spinner];
...
[self.view addSubview:view];
[UIView animateWithDuration:1.0
delay:2.0
options:0
animations:^{
v.alpha = 0.0;
} completion:^(BOOL finished) {
[v removeFromSuperview];
}
];
按照惯例:Fork,修改,创建pull请求。
Mark H. Granoff ~ @granoff / @hawkimedia
LaunchScreen遵循MIT许可证。有关更多信息,请参阅LICENSE文件。