iOS Objective-C基本核心动画,偏移,旋转,缩放,路径,抖动,组动画

来源:互联网 发布:minitab 两组数据分析 编辑:程序博客网 时间:2024/05/01 16:13

/*

主要思路就是创建CABasicAnimation、CAKeyframeAnimation、CAAnimationGroup对象,编写相应的动画效果后添加到view的layer里面。

*/




#import "ViewController.h"


@interface ViewController ()


@property (nonatomicstrongCALayer *redLayer;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    self.redLayer = [CALayer layer];

    

    self.redLayer.bounds = CGRectMake(00100100);

    

    self.redLayer.position = CGPointMake(100100);

    

    self.redLayer.backgroundColor = [UIColor redColor].CGColor;

    

    [self.view.layer addSublayer:self.redLayer];


    

//    [self test01];

//    [self test02];

//    [self test03];

//    [self test04];

//    [self test05];

    [self test06];

    

}


//组动画:多个动画同时进行

- (void) test06{

    

    CAAnimationGroup *animationGroup = [CAAnimationGroup animation];

    

    //1.路径

    CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    

    pathAnimation.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100100200100)].CGPath;

    

    //2.旋转

    CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

    

    rotationAnimation.byValue = @(M_PI * 2);

    

    //3.缩放

    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transfrom.scale"];

    

    scaleAnimation.toValue = @(0.5);

    

    

    

    

    

    

    animationGroup.animations = @[pathAnimation, rotationAnimation, scaleAnimation];

    

    animationGroup.duration = 3;

    

    animationGroup.repeatCount = CGFLOAT_MAX;

    

    

    [self.redLayer addAnimation:animationGroup forKey:nil];

    

    

}


//抖动

- (void) test05{


    

    CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];

    

    keyAnimation.values = @[@(-M_PI_4/4)@(M_PI_4/4)@(-M_PI_4/4)];

    

    keyAnimation.repeatCount = CGFLOAT_MAX;

    

//    keyAnimation.duration = 0.25;     //all animation's duration is 0.25

    

    [self.redLayer addAnimation:keyAnimation forKey:nil];

    


}


//按指定路径走的动画

- (void) test04{

    

    

    CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    

    keyAnimation.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100100200100)].CGPath;

    

    keyAnimation.duration = 3;

    

    [self.redLayer addAnimation:keyAnimation forKey:nil];

    

    

    

}


//基本动画,旋转

- (void) test03 {


    

    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

    

    basicAnimation.toValue = @(M_PI * 2);

    

    basicAnimation.repeatCount = 10;

    

    basicAnimation.removedOnCompletion = NO;

    

    basicAnimation.fillMode = kCAFillModeForwards;

    

    [self.redLayer addAnimation:basicAnimation forKey:nil];

    

    

    


}


//基本动画,缩放

- (void) test02 {

    

    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    

    //缩小小于1 放大大于1

    basicAnimation.toValue = @0.5;

    

    basicAnimation.duration = 3;

    

    basicAnimation.removedOnCompletion = NO;

    

    basicAnimation.fillMode = kCAFillModeForwards;

    

    [self.redLayer addAnimation:basicAnimation forKey:nil];

    

}



//基本动画,移动

- (void) test01{

    

    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position"];

    

    basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300300)];

    

    basicAnimation.duration = 3;

    

    basicAnimation.removedOnCompletion = NO;

    

    basicAnimation.fillMode = kCAFillModeForwards;


    

    [self.redLayer addAnimation:basicAnimation forKey:nil];

    

    


}


@end



0 0
原创粉丝点击