CABasicAnimation动画、动画组 与简单的转场动画CATransition

http://www.jianshu.com/p/02c341c748f9

    Core Animation  后台执行不会阻塞主线程直接作用在CALayer上而不是UIView

    CALayer *layer = [CALayerlayer];

    

    layer.position =CGPointMake(100,100);

    

    layer.bounds =CGRectMake(0,0,100,100);

    

    layer.backgroundColor = [UIColorredColor].CGColor;

    

    layer.contents = (id)[UIImageimageNamed:@"imageName"].CGImage;

    

    [self.view.layeraddSublayer:layer];

    

    _layer = layer;



- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    //创建动画对象

    CABasicAnimation *anim = [CABasicAnimationanimation];

    

    //设置动画的属性

    anim.keyPath =@"transform.scale";

    

    //设置属性改变的值

    anim.toValue =@0.5;

    

    //设置动画时长

    anim.duration =0.25;

    

    //取消反弹

    //动画执行完毕之后不要把动画移除

    anim.removedOnCompletion =NO;

    

    //保持最新的位置

    anim.fillMode =kCAFillModeForwards;

    

    //重复动画的次数

    anim.repeatCount =MAXFLOAT;

    

    //给图层添加了动画

    [_layeraddAnimation:animforKey:nil];


}


- (void)position

{

    //创建动画对象

    CABasicAnimation *anim = [CABasicAnimationanimation];

    

    //设置动画的属性 平移position 旋转transform.rotation缩放transform.scale

    anim.keyPath =@"position";

    

    //设置属性改变的值

    anim.toValue = [NSValuevalueWithCGPoint:CGPointMake(200,200)];

    

    //设置动画时长

    anim.duration =2;

    

    //取消反弹

    //动画执行完毕之后不要把动画移除

    anim.removedOnCompletion =NO;

    

    //保持最新的位置

    anim.fillMode =kCAFillModeForwards;

    

    //给图层添加了动画

    [_layeraddAnimation:animforKey:nil];

}


动画组 多动画同时执行

    CABasicAnimation *rotation = [CABasicAnimation  animation];

    

    rotation.keyPath = @"transform.rotation";

    

    rotation.toValue = @M_PI_2;

    

    CABasicAnimation *position = [CABasicAnimation animation];

    

    position.keyPath = @"position";

    

    position.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 250)];

    

    CABasicAnimation *scale = [CABasicAnimation animation];

    

    scale.keyPath = @"transform.scale";

    

    scale.toValue = @0.5;

    

    CAAnimationGroup *group = [CAAnimationGroup animation];

    

    group.animations = @[rotation,position,scale];

    

    group.duration = 2;

    

    // 取消反弹

    group.removedOnCompletion = NO;

    group.fillMode = kCAFillModeForwards;

    

    [_redView.layer addAnimation:group forKey:nil];


简单的转场动画

   

   NSString *fileName = [NSStringstringWithFormat:@"%d",_index];

    _imageView.image = [UIImageimageNamed:fileName];

    

    CATransition *anim = [CATransitionanimation];

    //设置转换的动画效果/* The name of the transition. Current legal transition types include

 * `fade', `moveIn', `push' and `reveal' “rippleEffect”. Defaults to `fade'. */

//翻页方式

    anim.type =@"pageCurl";

    //左起翻动

    anim.subtype =kCATransitionFromLeft;


/* The amount of progress through to the transition at which to begin

 * and end execution. Legal values are numbers in the range [0,1].

 * `endProgress' must be greater than or equal to `startProgress'.

 * Default values are 0 and 1 respectively. */


//    anim.startProgress = 0.5;  

    

    anim.duration =2;

    

    [_imageView.layeraddAnimation:animforKey:nil];






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值