ios 三种基本动画

来源:互联网 发布:中国移动网络维护 编辑:程序博客网 时间:2024/06/05 02:47

转载自:http://www.2cto.com/kf/201402/278925.html

第一种 隐式动画

这是一种最简单的动画,不用设置定时器,不用考虑线程或者重画

实现代码:

#import

?
1
2
3
4
5
6
7
8
9
-(void)clickButton:(UIButton*)button
{
    [UIView beginAnimations:nil
                    context:nil];
    CGAffineTransform transform=CGAffineTransformMakeTranslation(180,200);
    [self.imageView.layer setAffineTransform:transform];
    self.imageView.layer.opacity=1;
    [UIView commitAnimations];
}

操作layer,IOS的动画都是操作layer

第二种、显示动画

?
1
2
3
4
5
6
7
8
9
10
11
12
13
CABasicAnimation *opAnim=[CABasicAnimation animationWithKeyPath:@"opacity"];
opAnim.duration=6.0;
opAnim.fromValue=[NSNumber numberWithFloat:25];
opAnim.toValue=[NSNumber numberWithFloat:1.0];
opAnim.cumulative=YES;
opAnim.repeatCount=1;
[self.imageView.layer addAnimation:opAnim forKey:@"animateOpacity"];
 
CGAffineTransform moveTransform=CGAffineTransformMakeTranslation(200,200);
CABasicAnimation *moveAnim=[CABasicAnimation animationWithKeyPath:@"transform"];
moveAnim.duration=6.0;
moveAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeAffineTransform(moveTransform)];
[self.imageView.layer addAnimation:moveAnim forKey:@"animateTransform"];

第三种、关键帧显示动画
?
1
2
3
4
5
6
7
8
9
10
11
12
CAKeyframeAnimation *opAnim=[CAKeyframeAnimation animationWithKeyPath:@"opacity"];
    opAnim.duration=6.0;
    opAnim.values=@[@0.25,@0.75,@1.0];
    opAnim.keyTimes=@[@0.0,@0.5,@1.0];
    [self.imageView.layer addAnimation:opAnim forKey:@"animateOpacity"];
     
    CGAffineTransform moveTransform=CGAffineTransformMakeTranslation(180,200);
    CABasicAnimation *moveAnim=[CABasicAnimation animationWithKeyPath:@"transform"];
    moveAnim.duration=6.0;
    moveAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeAffineTransform(moveTransform)];
    moveAnim.delegate=self;
    [self.imageView.layer addAnimation:moveAnim forKey:@"animateTransform"];

values是一个值的数组

keyTimes是一个每个帧片段持续的时间比例,取值范围是0.0-1.0之前

0 0
原创粉丝点击