通过Xcode自带LaunchScreen布局文件自定义启动动画

大晚上刷微博,刷到一篇转发自 里脊串 的博客 Tips:获取APP的Launch Image

大致内容是:通过获取打包到 App 里的启动图,初始化一个 UIImageView 与屏幕同等大小再加载到 UIWindow 上来做启动延时,从而达到自定义启动动画的目的。代码里的各种 Key 没太看懂,放到工程里也没法显示效果。文中的意思是不要增加启动图的方式来适配,那我想了想 iOS 启动画面的方式目前我所知就两种:启动图和布局文件。我现在基本上没有用图片作为启动图,都是直接用布局文件搞定。

PS:今年开发的 App 基本上都是支持 iOS7 以上了,所以没太用启动图了, Xcode 6 是 LaunchScreen.xib ,到 Xcode 7 变成了 LaunchScreen.storyboard ,无可厚非,两者本质都是一样的。

教程看的云里雾里的,不过不打紧,思路还是一样的,我想如果 Storyboard 和Size Class 玩得多同学还是喜欢布局文件作为启动图的方式吧,所以我的方式是获取 LaunchScreen.storyboard 里的 ViewController ,在把 View 提取出来加到 UIWindow 显示做动画即可。

这种方式的好处就是,获取大小就是屏幕的大小,而且只要你把不同屏幕的布局搞定了,系统会帮你生成好加在的启动页,这样就免去了判断和从新设置大小的麻烦,这样才是真适配嘛~

废话不多说,上代码吧~

(对了,记得给 LaunchScreen.storyboard 里的 ViewController 设置好Storyboard ID )

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil] instantiateViewControllerWithIdentifier:@"LaunchScreen"];

UIView *launchView = viewController.view;
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
UIWindow *mainWindow = delegate.window;
[mainWindow addSubview:launchView];

[UIView animateWithDuration:2.0f delay:0.0f options:UIViewAnimationOptionBeginFromCurrentState animations:^{
    launchView.alpha = 0.0f;
    launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.3f, 1.3f, 1.0f);
} completion:^(BOOL finished) {
    [launchView removeFromSuperview];
}];

此代码片段,如果应用启动初始化如果是代码可以在AppDelegate加,Storyboard加载方式需要加在ViewController里。

2015.11.27

最近项目UI框架切换到 UITabBarController ,发现这个动画没法使用,是由于如果在 Storyboard 中使用 UITabBarController ,如果做启动登录需求,肯定是按需加载,就需要自建继承自 UITabBarController 的关联,如果在 - (void)viewDidLoad 里加载就会导致如下警告:

Warning: Attempt to present <HXLoginViewController: 0x7fa5a063cca0> on <HXMainViewController: 0x7fa5a05ae0b0> whose view is not in the window hierarchy!**

系统没法知道该怎么显示,所以只能放到 - (void)viewDidAppear:(BOOL)animated 里来做, UITabBarController 框架加载这个动画没效果也是这个原因,但是没Debug警告,不过要注意,如果只是单纯使用这个动画没啥问题,但是如果在 UITabBarController 上用 模态 视图的方式做按需加载以及转场动画需要处理 - (void)viewDidAppear:(BOOL)animated 重复调用的问题。

 
相关推刊
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Xcode中制作LaunchScreen.storyboard可以通过以下步骤进行: 1. 打开Xcode并创建一个新的项目或打开现有的项目。 2. 在项目导航栏中,找到并选中名为LaunchScreen.storyboard的文件。 3. 在Interface Builder中,你将看到一个可视化的画布,用于创建你的Launch Screen界面。 4. 你可以在右侧的对象库中选择和拖拽各种视图元素到画布上,比如标签、图像视图、按钮等等。根据你的需求,自定义你的Launch Screen界面。 5. 使用自动布局和约束来确保你的Launch Screen在各种设备和屏幕尺寸下都能正确显示。你可以使用Auto Layout来指定视图之间的关系和位置,以及对内容进行自适应布局。 6. 添加所需的背景图像或启动图像。你可以在图像资源选项卡中,将你的图像文件拖拽到LaunchScreen.storyboard上,并将其设置为背景图像或者其他所需的位置。 7. 根据需要,你可以使用动画效果或过渡效果来提高Launch Screen的可视化效果。这可以通过在Launch Screen上添加动画视图或切换视图的方式来实现。 8. 在你完成Launch Screen的设计和布局后,你可以选择在应用程序设置中将其设置为你的项目的主要启动界面。进入“General”选项卡,找到“App Icons and Launch Images”部分,选择“Launch Screen File”并选择你的Launch Screen.storyboard文件。 通过以上步骤,你可以使用Xcode中的Interface Builder创建和设计Launch Screen.storyboard,以实现你想要的启动界面效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值