分类: iOS平台
2017-01-24 16:58:18
首先先来看看动画设计中的三个角色:产品设计师、算法分析师以及伟大的程序员都有哪些职责。
(1)产品设计师:告诉大家想做一个什么样的动画。
(2)算法分析师:分析动画的实现原理并设计相应的动画算法。
(3)程序员:思考如何用代码实现算法。
在一般中小规模的公司中,开发人员往往都是身兼数职。不仅要编写代码还要参与到算法的设计中去,甚至参与到动画原型的设计中去。所以弄清楚动画设计过程中的不同角色,以及搞清楚动画的分析过程是非常有必要的。
下图是我们想要实现的动画效果,那么如何来分析它呢?其实产品设计师在设计动画时,如果能够将动画分解为单帧图像,或者能够较为慢速地展现动画的变化过程,那么对于算法分析师和程序员分析动画的原理,以及设计合适的展现算法起着非常重要的作用。下图描述了登录按钮从左到右逐渐移动的效果,并最后停留在视图层中间位置这一过程。
这个动画效果非常简单,可以用一句话来描述其实现算法,即图像的水平方向位置坐标和时间呈线性渐变关系。接下来思考如何用代码实现这个效果。按照动画的展示过程,这里将动画分为:动画起始阶段、动画进行阶段和动画结束阶段。
在动画启动的瞬间,希望动画从屏幕可视界面外飞入进来。如下图所示的登录按钮是需要实现的动画起始位置。
在iOS视图中,左上角为视图的原点(0,0),水平向右为x轴递增方向,竖直向下为y轴递增方向,只有当View视图位于手机屏幕展示坐标系之内,大家才能看到(虚线区域内控件不可见),否则登录按钮是不可见的。所以在动画的起始阶段可以将动画的位置属性设置在界面之外。
经过前面的分析,大家已经了解了这个动画效果的实现算法,即登录按钮的坐标沿水平方向随时间线性变化。如表1.1所示描述了不同时间段登录按钮的坐标变化情况。幸运的是大家不需要手动设计这一过程,甚至不需要手动写线性渐变的方法,因为iOS在UIView的显示层已经帮我们把这个功能集成了。iOS在UIView图层中不仅集成了动画的线性渐变方法,而且动画的加速、减速以及复杂的动画变化时间函数、运动路径函数也已经为大家集成好了,所以只需要学会如何使用这些丰富的API即可,且这个功能只需要几行代码就可以实现。
表1.1 6S下QQ图标移动效果:QQ图标x、y坐标随时间变化关系表
在动画效果结束之后没有触发新的回调事件,只是更新了当前登录按钮的最后位置,所以图片最终停留在视图层的中间位置。
首先创建一个单视图工程,创建好之后可以看到下图的工程文件目录结构:
动画实现的第一阶段:动画起始阶段
在开始正式添加动画代码之前需要为应用添加一个背景图片。在Main.storyboard中为整个工程添加一个已经准备好的背景图片,背景图片依托在UIImageView上。