Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。
Core Animation 组织结构如下:
主要使用这四部分动画:
CABasicAnimation
:基本动画(单一动画的实现)CAKeyframeAnimation
:关键帧动画(可以自定义行动路径)CATranstion
:转场动画(主要是提供一些渐变的动画效果)CAAnimationGroup
:组合动画(允许多个动画同时播放)
使用步骤:
1.添加 QuartzCore.framework
2.引入头文件#import <QuartzCore/QuartzCore.h>
1. CABasicAnimation
通过设定起始点, 终点, 时间, 动画会沿着设定的点进行移动, 可看做是特殊的CAKeyframeAnimation
说明这个动画对象要对CALayer的position属性执行动画
//缩放 (transform.scale)
//平移 (position)
//旋转 (transform.rotation)
设置动画效果为缩放:
缩放效果可以分别对应X , Y , Z 轴进行设置
transform.scale.x
,
transform.scale.y
,
transform.scale.z
.
旋转和缩放效果类似, 对应X , Y , Z 轴进行设置:
transform.rotation.x
,
transform.rotation.y
,
transform.rotation.z
.
CABasicAnimation*basicAnima = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
动画持续1.5s
basicAnima.duration=1.5;
放大
basicAnima.fromValue=@1; basicAnima.toValue=@2;
设置动画的代理
basicAnima.delegate=self;
自动返回
basicAnima.autoreverses=YES;
重复次数
basicAnima.repeatCount=10;
保持动画执行后的状态
basicAnima.removedOnCompletion=NO; basicAnima.fillMode=kCAFillModeForwards;
添加动画对象到图层上
[view1.layer addAnimation:basicAnima forKey:@"translate"];
代理方法
动画开始时
- (void)animationDidStart:(CAAnimation*)anim{ NSLog(@"动画开始了");}
动画结束时
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ NSLog(@"动画结束了"); }
今天小编就写到这里了, 如果发现我写的地方有问题, 希望能给我留言,我会及时进行修改, 大家一起进步, 剩下的三组动画, 最近也会做出更新, 希望能帮助到大家.