close
当前位置: 物联网在线 > 技术文库 > ios >

iOS动画详解

iOS动画详解

CAAnimation.png

二、CABasicAnimation

1. 动画的属性和解释

iOS动画详解

2.属性值的解释

repeatCount : 如果在swift中需要一直不断重复:Float.infinity,OC:HUGE_VALF

timingFunction:

iOS动画详解

kCAMediaTimingFunctionLinear --在整个动画时间内动画都是以一个相同的速度来改变。也就是匀速运动。一个线性的计时函数,同样也是CAAnimation的timingFunction属性为空时候的默认函数。线性步调对于那些立即加速并且保持匀速到达终点的场景会有意义(例如射出枪膛的子弹)。

kCAMediaTimingFunctionEaseIn: 动画开始时会较慢,之后动画会加速。一个慢慢加速然后突然停止的方法。对于之前提到的自由落体的例子来说很适合,或者比如对准一个目标的导弹的发射。

kCAMediaTimingFunctionEaseOut: 动画在开始时会较快,之后动画速度减慢。它以一个全速开始,然后慢慢减速停止。它有一个削弱的效果,应用的场景比如一扇门慢慢地关上,而不是砰地一声。

kCAMediaTimingFunctionEaseInEaseOut: 动画在开始和结束时速度较慢,中间时间段内速度较快。创建了一个慢慢加速然后再慢慢减速的过程。这是现实世界大多数物体移动的方式,也是大多数动画来说最好的选择。如果只可以用一种缓冲函数的话,那就必须是它了。那么你会疑惑为什么这不是默认的选择,实际上当使用UIView的动画方法时,他的确是默认的,但当创建CAAnimation的时候,就需要手动设置它了。

kCAMediaTimingFunctionDefault: 它和kCAMediaTimingFunctionEaseInEaseOut很类似,但是加速和减速的过程都稍微有些慢。它和kCAMediaTimingFunctionEaseInEaseOut的区别很难察觉,可能是苹果觉得它对于隐式动画来说更适合(然后对UIKit就改变了想法,而是使用kCAMediaTimingFunctionEaseInEaseOut作为默认效果),虽然它的名字说是默认的,但还是要记住当创建显式的CAAnimation它并不是默认选项(换句话说,默认的图层行为动画用kCAMediaTimingFunctionDefault作为它们的计时方法)。

使用方法:

pathAnim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

fillMode

iOS动画详解

kCAFillModeForwards: 动画开始之后layer的状态将保持在动画的最后一帧,而removedOnCompletion的默认属性值是 YES,所以为了使动画结束之后layer保持结束状态,应将removedOnCompletion设置为NO。

kCAFillModeBackwards: 将会立即执行动画的第一帧,不论是否设置了 beginTime属性。观察发现,设置该值,刚开始视图不见,还不知道应用在哪里。

kCAFillModeBoth: 该值是 kCAFillModeForwards 和 kCAFillModeBackwards的组合状态

kCAFillModeRemoved: 动画将在设置的 beginTime 开始执行(如没有设置beginTime属性,则动画立即执行),动画执行完成后将会layer的改变恢复原状。

3.使用心得

尽量不要设置removedOnCompletion = false ,因为配合CAAnimationDelegate会带来循环运用的问题,如果需要动画停留在最后的状态,可以直接设置View的center属性在动画结束的位置Point

之所以会出现 循环引用 因为由于CAAnimation的delegate使用的strong类型:看一下简要的说明图:

iOS动画详解

解决有时视图会闪动一下的问题,我们可以将layer的属性值设置为我们的动画最后要达到的值,然后再给我们的视图添加layer动画。

4.样例展示

旋转动画

旋转动画.gif

位移动画

位移动画.gif

背景颜色变化动画、背景图片变化动画、圆角变化动画

动画集合-1.gif

比例缩放动画

比例缩放动画-1.gif

size大小缩放、透明值变化动画(可用作闪烁效果)

size大小缩放、透明值变化动画.gif

5.常用KeyPath总结

iOS动画详解

三、CAKeyframeAnimation

CAKeyframeAnimation是核心动画里面的帧动画,它提供了按照指定的一串值进行动画,好像拍电影一样的一帧一帧的效果

1.属性解释

values: 是许多值组成的数组用来进行动画的。这个属性比较特别,只有在path属性值为nil的时候才有作用

path:路径,可以指定一个路径,让动画沿着这个指定的路径执行。


(责任编辑:ioter)


用户喜欢...

虚幻引擎学习之路:动画模块之基础篇

之前我们陆续为大家详细介绍了Unreal 4引擎的渲染模块(包括光照系统、材质系统、相机后处理和全局光照明),接下来我们将讲解动画模块的基础功能。 动画模块是游戏引擎中的重要部分,...


ZedBoard之中断interrupt详解

Interrupt中断 概述: 1. Zynq的中断类型有: 软件中断(Software Generated Interrupt, SGI,中断号0-15)(16–26 reserved) 私有外设中断(Private Peripheral Interrupt, PPI,中断号27-31), 共享外设中断(Shared...


高速ADC模拟输入架构类型详解

采用高速模数转换器(ADC)的系统设计非常困难,对于输入有两类ADC架构可供选择:缓冲型和无缓冲型。 缓冲和无缓冲架构的特征 缓冲架构的基本特征 高线性度缓冲器,但需要更高的功率;...


Xilinx开发板Si570频率配置方法详解

Xilinx大部分的开发板上都集成了Si570时钟芯片,该时钟的性能指标比较好,可以满足大部分高速串行接口应用对于参考时钟的要求。同时该时钟还可以通过I2C接口配置其输出频率。 该专题详细...


详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!

一、stm32的pwm输出引脚是使用的IO口的复用功能。 二、T2~T5这4个通用定时器均可输出4路PWM——CH1~CH4。 三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch...


详解聊天机器人:它会让人类工作变得多余吗?

从赋予市场权力到减轻人类的生活,技术一直推动着社会进步。随着新型创新不断让全世界赞叹不已,从来都是热议话题的聊天机器人可能不会就此退出历史舞台,因为推动这种潮流的重担可...


徒手实现CNN:综述论文详解卷积网络的数学本质

近日南洋理工大学研究者发布了一篇描述卷积网络数学原理的论文,该论文从数学的角度阐述整个卷积网络的运算与传播过程。该论文对理解卷积网络的数学本质非常有帮助,有助于读者「徒...


图文详解电容的9大功能

电容是电路设计中最为普通常用的器件,也常常在高速电路中扮演重要角色。 电容的用途非常多,主要有如下几种: 1、隔直流:作用是阻止直流通过而让交流通过。 2、旁路(去耦):为交...


LCD的接口类型详解

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MP...


详解CCD和CMOS的区别及主要硬件技术指标

CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,...