CABasicAnimation动画的使用

CABasicAnimation实现的动画效果主要有移动、放大或缩小、旋转(以x轴,或y轴,或z轴为中心)。在实现过程中,主要通过设置终点值进行控制,同时动画效果是添加在UIview的layer层。

/**
 *  CABasicAnimation动画
 *
 *  @param view      添加动画效果的UIView对象
 *  @param path      动画类型
 *  @param duration  动画时间,默认0.3
 *  @param function  动画函数名称kCAMediaTimingFunctionLinear,
 *                             kCAMediaTimingFunctionEaseIn,
 *                             kCAMediaTimingFunctionEaseOut,
 *                             kCAMediaTimingFunctionEaseInEaseOut,
 *                             kCAMediaTimingFunctionDefault
 *  @param fromValue 起始值
 *  @param toValue   终点值
 */
+ (void)basicAnimation:(UIView *)view
         animationPath:(NSString *)path
              duration:(NSTimeInterval)duration
        timingFunction:(NSString *)function
             fromValue:(id)fromValue
               toValue:(id)toValue
{
    // 旋转:x轴-@"transform.rotation.x",y轴-@"transform.rotation.y",z轴-@"transform.rotation.z";值设置xxx.toValue = [NSNumber numberWithFloat:22 * M_PI];
    // 移动:@"position";移值设置xxx.toValue = [NSValue valueWithCGPoint:CGPointMake(320, 480)];
    // 缩放:@"transform.scale";值设置xxx.toValue = [NSNumber numberWithFloat:2.0];
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:path];
    if (fromValue)
    {
        animation.fromValue = fromValue;
    }
    if (toValue)
    {
        animation.toValue = toValue;
    }
    animation.duration = (0.0 >= duration ? 0.3 : duration);
    animation.timingFunction = [CAMediaTimingFunction functionWithName:function];
    
    // 动画终了后不返回初始状态
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;
    
    [view.layer addAnimation:animation forKey:nil];
}

使用示例

// 旋转:x轴-@"transform.rotation.x",y轴-@"transform.rotation.y",z轴-@"transform.rotation.z";值设置xxx.toValue = [NSNumber numberWithFloat:22 * M_PI];
[self basicAnimation:animationImageView animationPath:@"transform.rotation.z" duration:0.6 timingFunction:kCAMediaTimingFunctionEaseInEaseOut fromValue:nil toValue:[NSNumber numberWithFloat:10 * M_PI]];
// 移动:@"position";移值设置xxx.toValue = [NSValue valueWithCGPoint:CGPointMake(320, 480)];
[self basicAnimation:animationImageView animationPath:@"position" duration:0.6 timingFunction:kCAMediaTimingFunctionEaseInEaseOut fromValue:nil toValue:[NSValue valueWithCGPoint:CGPointMake(320, 480)]];
// 缩放:@"transform.scale";值设置xxx.toValue = [NSNumber numberWithFloat:2.0];
[self basicAnimation:animationImageView animationPath:@"transform.scale" duration:0.6 timingFunction:kCAMediaTimingFunctionEaseInEaseOut fromValue:nil toValue:[NSNumber numberWithFloat:2.0]];





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值