序言
平时在家我经常会下载一些iOS排名比较靠前的应用或者游戏来玩,这些应用或者游戏都有比较显著的特点:界面优美、运行流畅、效果炫酷。这里暂且不去讨论iOS的硬件性能和UI美工设计是否优美,只是单纯从动画效果的角度看,它们对iOS动画效果的应用有着非常精致的把控。
在日常工作中,每开发一款APP,我们都会绞尽脑汁想让这款应用与众不同。其实不用太过于纠结系统,因为iOS的硬件都很棒。也不必太过于纠结美工,相信一个稍微靠谱的美工做出来的UI都不会太差。只需要选择和设计一些比较优美的动画,就可以让自己的应用上一个新的台阶。
在工作过程中大家都经历过这三个阶段。第一阶段初入江湖。在这个阶段如果想设计一个比较炫酷的动画效果,要么请教“大神”,要么进行网络搜索,而很少有自己的想法。这主要是因为大家对动画的架构、常用API、常用效果没有一个全面的认识,这个阶段基本属于代码收集阶段。第二阶段渐入佳境。相信大家在这个阶段都会有一些自己的思想,通过不断的尝试、对API不断地调整都能够实现最终想要的效果。总体来说这一阶段属于代码整理阶段。第三阶段登堂入室。需求来了之后在开发人员的大脑中很快被分解为若干子功能,迅速定位子功能需要实现的代码块。通过“搬砖+修改”的模式实现快速开发。这一阶段基本属于代码灵活运用阶段。
如果从零开始一步步完成这样三个阶段,相信大家都能做到,但是这会花费非常多的时间。在工作中我也曾被第一阶段和第二阶段反复困扰过,走了不少弯路,花费了大量的时间和精力,查看了各种官方手册和相关书籍,直到进入第三阶段才体会到“一览众山小”的感觉。所以我很想把iOS关于动画的相关知识为大家抽丝剥茧地整理一番,以帮助更多的人花费更少的时间掌握尽可能多的知识。
1.这本书有哪些特点
(1)层次分明
iOS动画效果非常丰富,本书一共16章,根据动画实现方式及效果分为4卷。第一卷(第1~5章)介绍显示层动画效果,第二卷(第6~12章)介绍内容层动画效果,第三卷(第13~14章)介绍3D动画效果,第四卷(第15~16章)介绍转场动画效果。这种划分有利于读者在学习的过程中对所要查找的动画效果快速定位,以及将知识点分类掌握。
第一卷为显示层动画效果,即利用UIView图层显示的效果实现各种动画。常见的有位置动画、颜色动画、淡入淡出动画、旋转动画、关键帧动画、逐帧动画等,文中针对要显示的动画效果一般采用3张图渐进描述,对于复杂的动画效果多采用6张图或9张图描述动画的渐变过程。其效果分别如图1~图4所示。
第二卷为内容层动画效果。内容层动画依赖视图的Layer图层,结合常用Layer子类,如CAEmitterCell粒子动画、CAGradientLayer扫描动画、CAShapeLayer图表类动画、CAReplicatorLayer图层快速复制动画等实现内容层动画展示,如图5~图8所示。
第三卷为3D动画效果。3D动画效果以矩阵变换为基础,利用x、y、z与变换矩阵相互作用实现各种3D效果,如图9所示。比如Cover Flow的3D动画展示效果,如图10所示。
第四卷为转场动画效果。转场动画常用于多视图场景下视图切换,如常见的水滴、翻页、波纹效果,或者自定义视图控制器转场动画,如图11~图12所示。
(2)内容丰富
对于相同类型、相同知识点的动画,书中做了详细的归纳和总结,这种归纳和总结有利于读者对动画整体架构的把握和快速精准的使用,如图13~图15所示是部分动画合集知识点。
(3)适用性强
本书针对每个章节给出适合阅读的人群,便于读者过滤出适合自己的核心内容。
(4)实用性强
在讲解每个动画案例的同时,尽可能贴近实际使用场景,如第二卷的各种Layer层动画实战案例、Button按钮相关动画效果等,如图16~图17所示。
2.iOS动画架构一览
根据不同维度对动画架构进行划分,可以很好地帮助大家理解iOS动画的结构及不同类型动画之间的相互联系。如图18~图20所示。
3.如何使用这本书
俗语说得好:“工欲善其事,必先利其器”,要想很好地使用这本书,必须先准备好一定的工具。本书中的所有代码都是基于Swift语言开发的,建议使用Xcode 8.0、SDK 10.0以上版本调试。源码下载地址详见:http://www. broadview.com.cn/30748。
工具和源码准备好之后呢?大家都知道几乎没有一本书百分之百适合我们,但或许有某个章节或者某个知识点刚好是大家想要学习和掌握的,本书也不例外。为了方便大家更好地使用这本书,特将本书的特点描述如下,希望广大读者根据自己的实际情况进行相关内容的阅读学习。
iOS初级开发工程师:建议从第1章动画入门开始,循序渐进地阅读。
iOS中级开发工程师:建议浏览或者跳过第一卷,重点关注第二、三、四卷。
iOS高级开发工程师:建议挑选工作中需要或感兴趣的章节阅读,如第9章“粒子动画”、第10章“光波扫描动画”。
iOS超级开发工程师:建议从整体架构和动画整理归纳的角度阅读本书。
致谢
在此感谢电子工业出版社的杨中兴编辑为本书提出的宝贵意见,感谢各位技术博主对本书的大力支持。最后感谢一直深爱并默默支持我的妻子,感谢她对我的关心和照顾,使得我可以抽出更多时间全身心地编写此书。
由于时间仓促,书中难免存在不足之处,欢迎大家批评指证。
郑微
2016年12月于武汉