iOS 核心动画Core Animation

Core Animation

基本3种动画:基本动画CABasicAnimation、  关键帧动画CAKeyframeAnimation、 转场动画CATransition

还有就是动画组:CAAnimationGroup

 

一、基本动画CABasicAnimation的使用:

CABasicAnimation * animation = [CABasicAnimation animation];
    //相应属性的值 如:transform.scale(缩放)、 transform.rotation.z(z轴,做旋转的时候)。。。
    animation.keyPath = keyPath;
    animation.toValue = toValue;//如改变缩放结束时的值 toValue = @0.5 、旋转角度 toValue = @(M_PI)
    animation.repeatCount = MAXFLOAT;
    // 设置动画完成的时候不要移除动画
    animation.removedOnCompletion = NO;
    //设置动画执行完成要保持最新的效果
    animation.fillMode = kCAFillModeForwards;
    /*
    duration    动画时长
    repeatCount    动画循环次数
    repeatDuration    动画时间
    timingFunction    动画的速度变化
    fromValue    所改变属性的起始值
    toValue    所改变属性的结束时的值
     */
//添加到对应的view的layer层上
[view.layer addAnimation:animation forKey:nil];

 

二、关键帧动画CAKeyframeAnimation

1、模拟iOS系统删除应用晃动的动画

CAKeyframeAnimation * rotation = [CAKeyframeAnimation animation];
    //相应属性
    rotation.keyPath = @"transform.rotation";
    //每个关键帧 改变属性的值
    rotation.values = @[@(TORADION(-5)),@(TORADION(5)),@(TORADION(-5))];
    rotation.repeatCount = MAXFLOAT;
   //添加到相应的view的layer上
    [view.layer addAnimation:rotation forKey:nil];

2、运动轨迹

//创建一个路径  或者得到一个路径
    UIBezierPath * bezierPath = [UIBezierPath bezierPath];
    [bezierPath moveToPoint:CGPointMake(0, 400)];
    [bezierPath addLineToPoint:CGPointMake(50, 300)];
    [bezierPath addLineToPoint:CGPointMake(100, 400)];
    [bezierPath addLineToPoint:CGPointMake(200, 300)];
    [bezierPath addLineToPoint:CGPointMake(250, 400)];
    [bezierPath addLineToPoint:CGPointMake(300, 250)];
    [bezierPath addLineToPoint:CGPointMake(330, 350)];
    [bezierPath addLineToPoint:CGPointMake(380, 300)];
    [bezierPath addLineToPoint:CGPointMake(450, 400)];
    
    CAKeyframeAnimation * position = [CAKeyframeAnimation animation];
    position.keyPath = @"position";
    //动画移动路径
    position.path = bezierPath.CGPath;
    position.repeatCount = MAXFLOAT;
    position.duration = 3;
    //添加到对应的view的layer上
    [view.layer addAnimation:rotation forKey:nil];

 

三、转场动画CATransition 

转场动画一定要在转场的时候使用才有效,如:改变UIImageView的图片

//改变ImageView.image的时候(转场)
    _imageView.image = [UIImage imageNamed:img];
    CATransition *atransition = [CATransition animation];
    //类型
    atransition.type = @"rippleEffect";
    atransition.duration = 1;
   //添加到_imageView的layer上 [_imageView.layer addAnimation:atransition forKey:nil];
/* 类型 1.#define定义的常量 kCATransitionFade 交叉淡化过渡 kCATransitionMoveIn 新视图移到旧视图上面 kCATransitionPush 新视图把旧视图推出去 kCATransitionReveal 将旧视图移开,显示下面的新视图 2.用字符串表示 pageCurl 向上翻一页 pageUnCurl 向下翻一页 rippleEffect 滴水效果 suckEffect 收缩效果,如一块布被抽走 cube 立方体效果 oglFlip 上下翻转效果 */

 

四、动画组CAAnimationGroup

这个很简单,就是把几个动画放到一个数组中去执行动画

// 同时缩放,平移,旋转
    //创建一个动画组
    CAAnimationGroup *group = [CAAnimationGroup animation];
    
    //缩放
    CABasicAnimation *scale = [CABasicAnimation animation];
    scale.keyPath = @"transform.scale";
    scale.toValue = @0.5;
    
    //旋转
    CABasicAnimation *rotation = [CABasicAnimation animation];
    rotation.keyPath = @"transform.rotation";
    rotation.toValue = @(arc4random_uniform(M_PI));
    
    //平移
    CABasicAnimation *position = [CABasicAnimation animation];
    position.keyPath = @"position";
    position.toValue = [NSValue valueWithCGPoint:CGPointMake(arc4random_uniform(200), arc4random_uniform(200))];
    
    //添加到动画组
    group.animations = @[scale,rotation,position];
    
    //添加到相应的view的layer上
    [view.layer addAnimation:group forKey:nil];

简单介绍    不好  勿喷。

 

 

转载于:https://www.cnblogs.com/qq9070/p/6786044.html

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值