iOS精华实例之App启动插画的自定义过度

简介: 转载请注明出处,保留原帖地址及作者署名. Url:http://blog.csdn.net/ysy441088327/article/details/8852304 Author:余书懿 引言: 精华实例是博主我新开设的一个专题,这个专题主要介绍一些在iOS应用中非常值得实践的例子.

转载请注明出处,保留原帖地址及作者署名.

Url:http://blog.csdn.net/ysy441088327/article/details/8852304

Author:余书懿



引言:

精华实例是博主我新开设的一个专题,这个专题主要介绍一些在iOS应用中非常值得实践的例子.

欢迎大家转载和传播,但请保留原著出处.因为我随时可能会更新以及纠错.

我希望每一个阅读精华实例的开发者能够从中受益,并且熟练的运用这些技巧. 

那么作为你们呢,在阅读完这篇文章以后,请尽量留下你的建议和看法. 这是我持续改进文章的一个主要方式.

精华实例的章节到底会有多少篇,这个我也很难预料,不过只要是我认为值得写的,我都会写出来. 让大家共同学习和成长!

开篇的废话比较多,下面开始进入正文:



什么是App启动插画的自定义过度?

我们都知道,App在启动的时候,会展示一张App启动插画来保证App程序加载的等待体验,让用户欣赏美丽的插画时,App真正默默的努力加载着相关资源,

App自动调用main函数,接着是:didFinishLaunchingWithOptions

当UIWindow执行makeKeyAndVisible时,那么这张启动插图就会自动消失了.但却是瞬间消失的.

而所谓的自定义过度就是让启动插图更加友好的消失(而不是瞬间没了),相信在很多主流App产品中已经看到不少这样的效果.

那么这个实现方式就是本文要讨论的重点!


程序原理是?

程序有时也会有点魔术的感觉,在你不知道原理的时候总感觉它很神秘!


App启动插画我们通过工程设置-targets-Summary-Launch Images 来设定.


但是这个启动插画的指针我们是获取不到的.(要是获取到了,这篇文章估计很短,甚至没有.)

那怎么办呢? 我们肯定要有这个指针,才能去实现自定义的过度,例如一点一点的消失啊,翻一页书那样的效果等等.

出于我们的目的,我们只有自己alloc一个UIImageView了,其加载的图片就是我们启动插画的图片.

但是要保证一点:启动插画展示的是什么样子,我们自己alloc 的UIImageView也应该是什么样子, 不然,这个体验就大打折扣了 你说呢?

而这个UIImageView我们到底应该addSubview在哪里是本实例的一个技术难点.

那答案是什么?

是UIWindow!却不是keyWindow.而是一个需要我们自己allocUIWindow!   但是它的windowLevel要比keyWindow高一级!

也就是说,为了让UIImageView顺利的展示出来并保证与启动插画的样子一摸一样,我们需要有一个UIWindow的容器.代码如下:


UIWindow是一个很神奇的类,当你alloc出来并把windowLevel设置比keyWindowlevel高以后,此时不再需要额外的执行makeKeyAndVisible或者addSubview来让这个UIWindow显示出来. 但是这个UIWindow的hidden属性却默认是YES, 所以我们需要将hidden设置为NO! 让UIWindow真正显示出来.

那么接下来把我们的UIImageView调用addSubview到这个UIWindow上面.

而alloc UIImageView时 有一点我们需要注意一下:

不要通过imageNamed的方式去获得UIImage, 大家都应该知道imageNamed是会自动把加载过的图片资源缓存起来,如果下次再调用同名称的图片,是直接从内存中获得,而我们的这个UIImageView只使用一次,当插画隐藏以后不再需要重复使用. 


那正确的获取方式是什么?

绝对路径的方式获得这张图片资源,就像下面这样:


imageWithContentsOfFile是符合我们现在使用图片资源的需求,因为它在使用完成以后会自动清理掉(ARC)

到此,我们的伪装版启动插图已经部署完成.


何时调用呢?

在第一个启动的ViewController中的viewWillAppear执行这些代码.那么不出意外的话,启动插画永远的显示了出来.

但是我们不是要一直显示啊,差不多它就应该消失了,只是说消失的时候更加友好一些!

因为我们已经有了UIImageView的指针了,接下来我们可以随意控制这个UIImageView消失的方式.


也就达到了本文的目的:

App启动插画的自定义过度


而博主我对于这项实例功能封装了一个类来方便调用! 已经上传到Github上. 欢迎大家使用并反馈问题.

它的名字叫:SYAppStart

SYAppStart的API很简单,

提供一套默认的显示和隐藏方法

核心在于hideWithCustomBlock来自定义更多隐藏插画的方式.

希望有人能够pull request 很棒的自定义隐藏代码!




小技巧:

1.如何全屏展示启动插画(隐藏状态栏那种)?


勾上即可!

2.如何在展示完成以后又立刻恢复状态栏的显示?



总结:

博主本人已对此功能进行封装,基本上不需要关心核心功能的实现,那为什么还要费一大半劲去阐述原理?

因为该功能在于如何利用UIWindow去实现,或者说我们想把顶部状态栏更好的掌控在手中,那么理解UIWindow是首当其冲!

阅读完本文以后有任何疑问,都务必说出来,不想注册csdn账号的,可以通过微博私信我,这是我持续改进文章内容的主要方式. 谢谢!



目录
相关文章
|
4月前
|
Linux Shell 网络安全
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
|
4月前
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
|
4月前
【Azure App Services】多次操作App Service伸缩实例遇见限制操作记录
【Azure App Services】多次操作App Service伸缩实例遇见限制操作记录
|
1月前
|
传感器 iOS开发 UED
探索iOS生态系统:从App Store优化到用户体验提升
本文旨在深入探讨iOS生态系统的多个方面,特别是如何通过App Store优化(ASO)和改进用户体验来提升应用的市场表现。不同于常规摘要仅概述文章内容的方式,我们将直接进入主题,首先介绍ASO的重要性及其对开发者的意义;接着分析当前iOS平台上用户行为的变化趋势以及这些变化如何影响应用程序的设计思路;最后提出几点实用建议帮助开发者更好地适应市场环境,增强自身竞争力。
|
1月前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
2月前
|
移动开发 小程序 测试技术
自定义多级联动选择器指南(uni-app)
在本文中,探讨了如何在uni-app中创建自定义多级联动选择器组件。这个组件具有强大的多端支持,可适用于H5、APP、微信小程序、支付宝小程序等多种平台。
132 1
自定义多级联动选择器指南(uni-app)
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
59 1
|
2月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
62 5
|
2月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
179 9
|
2月前
|
Swift iOS开发 UED
实现一个自定义的iOS动画效果
本文介绍如何使用Swift和UIKit在iOS应用中实现一个自定义按钮动画,当按钮被点击时,其颜色从蓝色渐变为绿色,形状从圆形变为椭圆形,释放后恢复原状。通过UIView动画方法实现这一效果,代码示例展示了动画的平滑过渡和状态切换,有助于提升应用的视觉体验和用户交互。
59 1

热门文章

最新文章