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

2024-09-06 12:18

本文主要是介绍通过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 重复调用的问题。

 
推荐文章
  • 1. [iOS] BarcodeScanner:二维码扫描、识别控制组件
  • 2. [iOS] WSTagsField:可定制、易用的标签文本框输入组件
  • 3. 自己动手实现 Pokemon Go 锁区破解 —— 记一次重签名
  • 4. iOS 狂霸酷炫拽之Button动效
  • 5. [iOS] BentoMap:四叉树算法实现地图目标快速标记类库及演示
  • 6. iOS-最全的App上架教程
相关推刊

这篇关于通过Xcode自带LaunchScreen布局文件自定义启动动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141985

相关文章

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro