[IOS笔记] - 动画animation

//移动

- (IBAction)translation:(id)sender {

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

    traslation.toValue = [NSValue valueWithCGPoint:CGPointMake(320,480)];

    traslation.duration = 2.0;

    //traslation.autoreverses = YES;

    traslation.repeatCount = 1;



    [self.m_image.layer addAnimation:traslation forKey:@"traslation"];

}



//透明

- (IBAction)opacity:(id)sender {

    CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"];

    opacity.fromValue = [NSNumber numberWithFloat:1.0];

    opacity.toValue = [NSNumber numberWithFloat:0.4];

    opacity.duration = 0.2; //动画时间

    opacity.repeatCount = FLT_MAX; //永久

    opacity.autoreverses = YES; //每次动画后倒回回放

    opacity.removedOnCompletion=NO;  //动画后不还原,为no时不回到最初状态

    opacity.fillMode=kCAFillModeForwards;

    

    [self.m_image.layer addAnimation:opacity forKey:@"opacity"];

}



// 旋转

- (IBAction)rotate:(id)sender {

    CATransform3D ca3d = CATransform3DMakeRotation(45 * 3.14159265/180.0, -1, 1, 1);

    

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

    rotate.toValue = [NSValue valueWithCATransform3D:ca3d];

    rotate.duration=1.0;

    rotate.autoreverses=NO;

    rotate.repeatCount=1;

    rotate.removedOnCompletion=NO;

    rotate.fillMode=kCAFillModeForwards;

    [self.m_image.layer addAnimation:rotate forKey:@"rotate"];

}



- (IBAction)alpha:(id)sender {

}



//缩放

- (IBAction)scale:(id)sender {

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

    scale.fromValue=[NSNumber numberWithFloat:0.5];

    scale.toValue = [NSNumber numberWithFloat:2.0];

    scale.duration=1.0;

    scale.autoreverses=YES;

    scale.repeatCount=2;

    scale.removedOnCompletion=YES;

    scale.fillMode=kCAFillModeForwards;

    [self.m_image.layer addAnimation:scale forKey:@"scale"];

}



//不按原始边长度缩放

-(IBAction)bounds:(id)sender{

    CABasicAnimation *bounds = [CABasicAnimation animationWithKeyPath:@"bounds"];

    bounds.duration = 1.f;

    bounds.fromValue = [NSValue valueWithCGRect:CGRectMake(0,0,10,10)];

    bounds.toValue = [NSValue valueWithCGRect:CGRectMake(10,10,200,200)];

    bounds.byValue  = [NSValue valueWithCGRect:self. m_image.bounds];



    bounds.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    bounds.repeatCount = 1;

    bounds.autoreverses = YES;

    

    [self.m_image.layer addAnimation:bounds forKey:@"bounds"];

}



- (IBAction)path:(id)sender {

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

    CGMutablePathRef path = CGPathCreateMutable();

    CGPathMoveToPoint(path, nil, 0, 0);

    //添加直线路径

    CGPathAddLineToPoint(path, NULL, 60, 130);

    CGPathAddLineToPoint(path, NULL, 70, 140);

    CGPathAddLineToPoint(path, NULL, 80, 150);

    CGPathAddLineToPoint(path, NULL, 90, 160);

    CGPathAddLineToPoint(path, NULL, 100, 170);

    //添加曲线路径

    CGPathAddCurveToPoint(path,NULL,50.0,275.0,150.0,275.0,70.0,120.0);

    CGPathAddCurveToPoint(path,NULL,150.0,275.0,250.0,275.0,90.0,120.0);

    CGPathAddCurveToPoint(path,NULL,250.0,275.0,350.0,275.0,110.0,120.0);

    CGPathAddCurveToPoint(path,NULL,350.0,275.0,450.0,275.0,130.0,120.0);

    

    animation.path = path;

    animation.duration = 5;

    animation.autoreverses = YES;

    [self.m_image.layer addAnimation:animation forKey:@"path"];

    CFRelease(path);

}

//组合动画

- (IBAction)goup:(id)sender {

    CAAnimationGroup *group = [CAAnimationGroup animation];

    

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

    scale.fromValue=[NSNumber numberWithFloat:0.5];

    scale.toValue = [NSNumber numberWithFloat:2.0];

    

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

    traslation.toValue = [NSValue valueWithCGPoint:CGPointMake(320,480)];

    

    group.animations=[NSArray arrayWithObjects:scale, traslation, nil];

    group.duration = 2.0;

    

    [self.m_image.layer addAnimation:group forKey:@"group"];

}

你可能感兴趣的:(animation)