Welcome to my blog. Thanks.
Dome: github地址
CAPropertyAnimation 的子类有CABsicAnimation 和 CAKeyframeAnimation。
今天要说的就是CAKeyframeAnimation关键帧动画,毫无疑问一切复杂的动画都是由简单的动画拼接来的,知其所以然,需要的时候必定能写出好的动画
keyFrameAnimation
属性值了解
1、关键帧值数组,一组变化值
@property(nullable, copy) NSArray *values;
2、关键帧帧路径,优先级比values大
@property(nullable) CGPathRef path;
3、每一帧对应的时间,时间可以控制速度.它和每一个帧相对应,取值为0.0-1.0,不设则每一帧时间相等.
@property(nullable, copy) NSArray *keyTimes;
4、每一帧对应的时间曲线函数,也就是每一帧的运动节奏
@property(nullable, copy) NSArray *timingFunctions;
5、动画的计算模式,默认值: kCAAnimationLinear.有以下几个值:
@property(copy) NSString *calculationMode;
kCAAnimationLinear
关键帧为座标点的时候,关键帧之间直接直线相连进行插值计算;
kCAAnimationDiscrete
离散的,也就是没有补间动画
kCAAnimationPaced
平均,keyTimes跟timeFunctions失效
kCAAnimationCubic
对关键帧为座标点的关键帧进行圆滑曲线相连后插值计算,对于曲线的形状还可以通过tensionValues,continuityValues,biasValues来进行调整自定义,keyTimes跟timeFunctions失效
kCAAnimationCubicPaced
在kCAAnimationCubic的基础上使得动画运行变得均匀,就是系统时间内运动的距离相同,,keyTimes跟timeFunctions失效
6、动画的张力,当动画为立方计算模式的时候此属性提供了控制插值,因为每个关键帧都可能有张力所以连续性会有所偏差它的范围为[-1,1].同样是此作用
@property(nullable, copy) NSArray *tensionValues;
7、动画的连续性值
@property(nullable, copy) NSArray *continuityValues;
8、动画的偏斜率
@property(nullable, copy) NSArray *biasValues;
9、动画沿路径旋转方式,默认为nil.它有两个值:
@property(nullable, copy) NSString *rotationMode;
kCAAnimationRotateAuto
自动旋转
kCAAnimationRotateAutoReverse
自动翻转
动画应用
draw a curve
keyFrame:
path:路径
duration:单次时间
rotationMode:旋转样式
repeatCount:重复次数
1、弧形
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise ;
center : 弧形的中心
radius: 弧形的半径
startAngle:弧形开始弧度
endAngle:弧形结束弧度
colockwise:顺逆时针
2、抛物线
- (void)moveToPoint:(CGPoint)point
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
point:开始位置
endPoint:结束位置
controlPoint:拐点位置
3、椭圆形
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
rect: x起点
y起点
width宽度
height高度
4、圆形
rect:
width = height
网友评论