iOS学习之路02
来源:互联网 发布:用记事本编写java 编辑:程序博客网 时间:2024/05/16 04:56
- CoreAnimation 核心动画
- CALayer
- 概念
- UIView是对CALayer的封装,然UIView封装的API在有些情况下并不能满足我们的需求,比如:①阴影、圆角、边框,②3D变换,④遮罩,⑤非线性动画
- 为什么iOS要基于UIView和CALayer提供两个平行的层级关系?原因在于要做职责分离,这样也能避免很多重复代码,在iOS和MacOS两个平台上,事件和用户交互有很多地方的不同,基于多点触控的用户界面和基于鼠标键盘有着本质的区别,这就是为什么iOS有UIKit和UIView,而MacOS有AppKit和NSView的原因
- 创建方式
CALayer *layer = [CALayer layer];
- 常用属性
- bounds与position来确定Layer的大小和位置
- anchorPoint:锚点,Layer的定位是根据Layer的那一个点,默认中心点(0.5,0.5)
- CATransform3D transform:3D变换
- masksToBounds:裁剪掉多余的,同cornerRadius配合使用
- cornerRadius:设置圆角
- borderWidth、borderColor:设置边框的宽度、颜色
- opacity:设置透明度
- shadowColor:设置阴影颜色,同时也要设置shadowOpacity = 1
- mask:设置蒙版,同时设置masksToBounds = YES;
- 专用图层
- CAShapeLayer
- CATextLayer
- CAGradientLayer
- CAEmitterLayer
- AVPlayerLayer
- CAAnimation(核心动画)
- CAAnimation继承结构
- CAMediaTiming协议
- beginTime 动画开始时间,可以延时动画开始,beginTime属性同timeOffset、speed三个属性可以实现动画的暂停与播放
- duration 动画持续总时长
- speed 动画播放速率
- timeOffset 时间偏移量,以某一个时间点动画的状态开始播放
- repeatCount 重复次数
- repeatDuration 重复总时长
- autorererses 是否反转动画,当一轮动画结束后
- fillMode 动画结束后的状态,要想fillMode有效,最好设置removedOnCompletion = NO;
- timingFunction速度控制函数
- kCAMediaTimingFunctionLinear 线性、匀速
- kCAMediaTimingFunctionEaseln 先慢
- kCAMediaTimingFunctionEaseOut 后慢
- kCAMediaTimingFunctionEaseInEaseOut 先慢后慢中间快
- CABasicAnimation
- 相关属性
- fromValue keyPath相应属性的初始值
- toValue keyPath相应属性的结束值
- byValue keyPath相应属性的结束值,从原始值到byValue
- 代码事例
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath: transform translation.x];
ani.byValue = @320;
ani.duration = 1;
ani.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
ani.fillMode = KCAFillModeForwards;
ani.removedOnCompletion = NO;
[self.animationView.layer.addAnimation: ani forKey: nil];
- CAKeyframeAnimation 关键帧动画
- 关键帧动画与简单动画的区别是:简单动画只能从一个数值过渡到另一个数值,而关键帧动画会有一个NSArray来保存多个数值的过渡
- 常用属性
- values:NSArray类型,存储关键帧,动画依次显示values数组中的每一个关键帧
- path:可以设置一个CGPathRef、CGMutablePathRef,让图层按照路径轨迹移动,默认值为nil,当其被设定的时候values这个属性就被覆盖
- keyTimes:可以为对应的关键帧指定时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧,当keyTimes没有设置时,各关键帧的时间是平分的
- calculationMode:计算模式,动画的播放模式
- CAAnimationGrop动画组
- CAAnimationGrop可以把简单动画、关键帧动画组合起来
- 属性animations:用来保存一组动画对象的NSArray
- 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来改动属性的开始时间
- CATransition转场动画
- CATransition并不像属性动画那样平滑地在两个值之间做动画,而是影响整个图层的变化,过渡动画首先展示之前的图层外观,然后通过一个变换过渡到新的外观
- 常用属性
- type:动画过渡类型,例如:kCATransitionFade(淡入淡出)
- subtype:动画过渡方向,例如:kCATransitionFromRight
- startProgress:动画起点
- endProgress:动画终点
- CALayer中可用作动画的属性
anchorPoint
backgroundColor
borderColor
borderWidth
bounds
contents
contentsRect
cornerRadius
hidden
mask
masksToBounds
opacity
position
shadowOffset
shadowOpacity
shadowOffset
shadowPath
shadowRadius
sublayers
sublayerTransform
transform
zPosition
阅读全文
0 0
- iOS学习之路02
- ios学习之路
- IOS学习之路
- iOS UI学习之路02
- IOS菜鸟学习之路
- IOS开发学习之路
- iOS学习之路--多线程
- iOS学习之路01
- iOS学习之路03
- iOS学习之路04
- iOS学习之路05
- iOS学习之路06
- iOS学习之路07
- iOS学习之路08
- iOS学习之路09
- iOS学习之路10
- IOS学习之路之 音效处理
- iOS学习之路 XML处理
- 蓝桥杯java第四届决赛第一题--猜灯谜
- 微信公众号接口开发:新增临时素材{"errcode":41005,"errmsg":"media data missing"}
- 修改Gradle本地仓库的位置 方法
- shell 填坑记录
- Java实现Base64加密
- iOS学习之路02
- python浅谈
- MySQL的奇妙冒险(持续更新!)
- jQuery框架问题:ajax与web服务器通信
- 23.七-判断质数
- db2 reorg
- 需求
- sklearn分类算法汇总
- 蓝桥杯java第四届决赛第二题--连续奇数和