首先搭建一个工程,可以进行学习,要求有:
1.在storyboard中的ViewController上放置2个Button,1个view(颜色为橘红色)
2.将ViewController中的Button以及View与ViewController.swift关联,用ctl拖动方法,Button选择action(命名为startAnimationButton和goBackAnimationButton),view选择outlet(命名为viewOfAnimation)。
3.在ViewController.swift写入一些基本代码:
OK啦,基本要素搭建完毕,下面就开始学习iOS的动画编程啦
一、视图动画:UIViewAnimation
1.UIView.animateWithDuration方法介绍
调用动画的代码:UIView.animateWithDuration
我们先来了解其中一个代码
UIView.animateWithDuration(duration: NSTimeInterval, animations: () -> Void() -> Void)
第一个要素是动画持续时间,例如一秒就写入1
第二个要素是block,回车就可以展开block
例如将一个view向右移动100这个动画可以用如下图代码实现:
2.UIViewAnimateOptions方法介绍
调用方法见下图中第三个选项:
UIViewAnimateOptions主要控制以下3类事情:
(1)动画控制相关
LayoutSubviews
提交动画的时候布局子控件,子控件将和父控件一起动画
AllowUserInteraction
动画在执行时运行用户交互,比如用户可以触摸屏幕
BeginFromCurrentState
所有的界面从当前的值开始动画,而不是从初始值开始动画
Repeat
动画无限次重复
Autoreverse
如果设置了动画无限次重复,执行动画回路
OverrideInheritedDuration
忽略外层动画持续时间
OverrideInheritedCurve
忽略外侧动画的时间变化曲线
AllowAnimatedContent
允许改变动画内容吗,只能在transition的时候使用
ShowHideTransitionViews
显示或者隐藏,不使用增加或者移除
OverrideInheritedOptions
不继承任何选项或者动画类型
(2)时间曲线相关
执行动画的时候,动画的速度的变化
CurveEaseInOut
由慢到快再到慢CurveEaseIn
由慢到快CurveEaseOut
由快到慢CurveLinear
匀速
(3)转场效果相关
TransitionNone
这个是默认的,无转场效果
TransitionFlipFromLeft
从左翻转
TransitionFlipFromRight
从右翻转
TransitionCurlUp
上卷
TransitionCurlDown
下卷
TransitionCrossDissolve
交叉消失
TransitionFlipFromTop
从上翻转
TransitionFlipFromBottom
从下翻转
3.UIViewAnimation操作视图属性方法
(1)Block
苹果建议使用此方法。此方法适用于iOS6.0以及以后的版本
(2)Begin/Commit
iOS6.0以前使用此方法。
(3)Nest
动画中可以嵌套子动画,使用OverrideInheritedDuration
、OverrideInheritedCurve
和OverrideInheritedOptions
重新嵌套的子动画属性,如果不重写,子动画将会继承父动画的属性。
UIViewAnimationOpitions可以用
|
来同时使用多个
4.transitionWithView视图切换的动画效果
常见的一个列子就是阅读APP,读书的APP或者阅读小说的APP,看书时打开下一页时,会有翻书的效果,这个效果,就是使用视图切换的动画效果制作出来的。
代码如下图:
5.transitionFromView视图替换的动画效果
这个是一个view来替换一个view,从语法中能看出和4的区别
二、核心动画:CoreAnimation
1.图层CALayer
self.view.layer.addSublayer()
layer只负责图层的显示,没有动作的响应。
layer的属性有:
backgroundColor 背景颜色
borderWidth 边框宽度
borderColor 边框颜色
cornerRadius 边框圆角度数(矩形四个角)
shadowColor 阴影的颜色
shadowOffset 阴影的偏移量
shadowRadius 阴影的边框圆角度数
shadowOpacity 阴影的透明度
shadowPath 阴影的路径
等等,还有其他的属性,在xcode帮助文档中输入CALayer即可找到所有的介绍。
2.动画类CAAnimation
(1)CABasicAnimation显式动画
(2)CAKeyFrameAnimation关键帧动画
(3)CAAnimationGroup
(4)CATransition
position.x
3.事务类CATransaction
4.显式动画CABasicAnimation
1)选定演员CALayer
2)写剧本CABasicAnimation
CABasicAnimation(keyPath:"transform.scale")
CABasicAnimation(keyPath:"opacity")
fromValue
toValue
autoreverses
repeatCount (MAXFLOAT)
duration
3)将剧本给演员addAnimation
layer.addAnimation
具体代码如下:
5.关键帧动画CAKeyFrameAnimation
1)选定演员CALayer
2)写剧本CAKeyFrameAnimation
CAKeyFrameAnimation(keyPath:"position")
确定四个位置的值:
位置一原点:NSValue(CGPoint: layer.position)
value值确定输入四个位置点
autoreverses
repeatCount
duration
3)将剧本给演员addAnimation
具体代码如下:
6.CAMediatimingFunctions功能介绍
可以改变关键帧动画中的运行轨迹和动画表格
具体见代码:
keyTimes
是每一段执行的时间