CABasicAnimation(2)


CABasicAnimation简介

CABasicAnimationCAPropertyAnimation的子类,使用它可以实现一些基本的动画效果,它可以让CALayer的某个属性从某个值渐变到另一个值。下面就用CABasicAnimation实现几个简单的动画。

先初始化一个view

   UIView * greenView = [[UIView alloc] init];
    greenView.backgroundColor = [UIColor greenColor];
    greenView.frame = CGRectMake(100, 100, 100, 100);
    self.greenView = greenView;
    [self.view addSubview:greenView];
1>平移动画
<span style="color:#333333;">- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 实例化CABasicAnimation对象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 设置属性
    anim.keyPath = @"position";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(60, 80)];
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
    
    </span><span style="color:#ff0000;">anim.fillMode = kCAFillModeForwards;
    anim.removedOnCompletion = NO;</span><span style="color:#333333;">
    
    // 将动画添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}
</span>

点击屏幕从(60,80)移动到(200,200),如果没有fillMode和remoovedOnCompletion属性设置的话,在动画结束后会回到原来的位置(100,100)。



2>缩放动画

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 实例化CABasicAnimation对象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 设置属性
    anim.keyPath = @"bounds";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 30, 30)];
    
//    anim.fillMode = kCAFillModeForwards;
//    anim.removedOnCompletion = NO;
    
    // 将动画添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}


如果将fillMode和removeOnCompletion注释掉的话在缩小到(30,30)的时候还会回到原来的(100,100)

3>旋转动画
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 实例化CABasicAnimation对象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 设置属性
    anim.keyPath = @"transform";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];
    
    anim.fillMode = kCAFillModeForwards;
    anim.removedOnCompletion = NO;
    
    // 将动画添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}
绕z轴顺时针旋转45度



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值