iOS简单的动画效果

参考这里

主要是先初始化Layer,把layer定义好,用封装好的动画效果定义:CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];

关键在于这个keyPath,

iOS简单的动画效果_第1张图片
KeyPath

在@"transform."的“.”后面加上关键字,至于动画效果,只要试一下就了解了,主要就是关于x,y,z轴的各种方向的转动。

在动画写好后,只要把动画加到layer上即可实现:[_scaleLayer addAnimation:scaleAnimation forKey:@"scaleAnimation"];

这里:scaleAnimation.autoreverses = YES; //旋转后再旋转到原来的位置

动画的fill mode:fillMode

fillMode的作用就是决定当前对象过了非active时间段的行为. 比如动画开始之前,动画结束之后。如果是一个动画CAAnimation,则需要将其removedOnCompletion设置为NO,要不然fillMode不起作用. 下面来讲各个fillMode的意义

kCAFillModeRemoved 这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态

kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态

kCAFillModeBackwards 这个和kCAFillModeForwards是相对的,就是在动画开始前,你只要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始.你可以这样设定测试代码,将一个动画加入一个layer的时候延迟5秒执行.然后就会发现在动画没有开始的时候,只要动画被加入了layer,layer便处于动画初始状态

kCAFillModeBoth 理解了上面两个,这个就很好理解了,这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态.


我们也可以创建一个button,在点击事件上加上[_scaleLayer removeAnimationForKey:@"scaleAnimation"];注意@“ ”里的key应该与你之前加载动画的key一样,这样点击后,就会移除动画了。

几个选项

kCAMediaTimingFunctionLinear 线性动画

kCAMediaTimingFunctionEaseIn 先慢后快(慢进快出)

kCAMediaTimingFunctionEaseOut 先块后慢(快进慢出)

kCAMediaTimingFunctionEaseInEaseOut 先慢后快再慢

kCAMediaTimingFunctionDefault 默认,也属于中间比较快



iOS简单的动画效果_第2张图片
树状图

添加了CASpringAnimation


常用属性

duration : 动画的持续时间

beginTime : 动画的开始时间

repeatCount : 动画的重复次数

autoreverses : 执行的动画按照原动画返回执行

timingFunction : 控制动画的显示节奏系统提供五种值选择

你可能感兴趣的:(iOS简单的动画效果)