iOS开发总结之CABasicAnimation

来源:互联网 发布:淘宝女包 编辑:程序博客网 时间:2024/05/29 08:15


1.创建图层

#import "ViewController.h"@interface ViewController ()@property(strong,nonatomic) CALayer *layer;@end@implementation ViewController- (void)viewDidLoad{    [super viewDidLoad];        CALayer *layer = [CALayer layer];    layer.position = CGPointMake(100, 100);    layer.bounds = CGRectMake(0, 0, 100, 100);    layer.backgroundColor = [UIColor redColor].CGColor;    [self.view.layer addSublayer:layer];    self.layer = layer;}

2.demo示例

demo示例1.

- (void)testTransform{    // 1.创建动画对象//    CABasicAnimation *anim = [CABasicAnimation animation];//    // 2.设置动画对象//    // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画//    //    anim.keyPath = @"transform.rotation";//    //    anim.keyPath = @"transform.scale.x";//    anim.keyPath = @"transform.translation.x";         CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];        anim.toValue = @(200);    //    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];    anim.duration = 2.0; //动画时间        /**让图层保持动画执行完毕后的状态**/    // 动画执行完毕后不要删除动画  这个要和下面的fillMode结合使用 需要将其removedOnCompletion设置为NO,要不然fillMode不起作用    anim.removedOnCompletion = NO;    // 保持最新的状态    anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态        // 3.添加动画    [self.layer addAnimation:anim forKey:nil];}

效果:

动画开始前:

动画结束后:



demo示例2:

- (void)testRotate{    // 1.创建动画对象//     CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:<#(nullable NSString *)#>    CABasicAnimation *anim = [CABasicAnimation animation];        // 2.设置动画对象    // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画    anim.keyPath = @"transform";    //    anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];    anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI/3, 1, -1, 0)];    anim.duration = 2.0;        anim.removedOnCompletion = NO; //需要将其removedOnCompletion设置为NO,要不然fillMode不起作用    anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态        // 3.添加动画    [self.layer addAnimation:anim forKey:nil];}
效果:
动画开始前:

动画结束后:

demo示例3:

- (void)testScale{    // 1.创建动画对象    //     CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:<#(nullable NSString *)#>    CABasicAnimation *anim = [CABasicAnimation animation];        // 2.设置动画对象    // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画    anim.keyPath = @"bounds";//        anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];    anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];    anim.duration = 2.0;        /**让图层保持动画执行完毕后的状态**/    // 动画执行完毕后不要删除动画  这个要和下面的fillMode结合使用 需要将其removedOnCompletion设置为NO,要不然fillMode不起作用    anim.removedOnCompletion = NO;    // 保持最新的状态    anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态        // 3.添加动画    [self.layer addAnimation:anim forKey:nil];}

动画开始前:

动画结束后:


0 0
原创粉丝点击