zoukankan      html  css  js  c++  java
  • iOS开发之Core Animation

    在IOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现,如果想实现更复杂的效果,则需要使用Core Animation了。

    在Core Animation中我们经常使用的是

    • CABasicAnimation
    • CAKeyframeAnimation
    • CATransitionAnimation

    其中CABasicAnimationCAKeyframeAnimation是对图层中的不同属性进行动画的。

    如果要多整个图层进行动画,则应该使用CATransitionAnimation

    如果要使用组合动画,例如要改变图层的大小和透明度,则可以先为每个属性创建一个CABasicAnimation对象,再把他们组合到CAAnimationGroup中,最后把这个组合添加到要进行动画的CALayer中。

    注:CAAnimation(以及CAAnimation的子类),全部都是显式动画,这样动画播放后,表现层回恢复到模型层的原始状态,这就意味着,如果动画播放完后,会恢复到原来的样子,所以在动画播放完后要对模型层进行修改,例如:self.view.layer.backgroundColor=[UIColor blueColor].CGColor;

    1、自定义动画:CABasicAnimation

    -(void)animationOfCABasicAnimation
    {
        //创建一个CABasicAnimation对象
        CABasicAnimation *animation=[CABasicAnimation animation];
        //设置颜色
        animation.toValue=(id)[UIColor blueColor].CGColor;
        //动画时间
        animation.duration=1;
        //是否反转变为原来的属性值
        animation.autoreverses=YES;
        //把animation添加到图层的layer中,便可以播放动画了。forKey指定要应用此动画的属性
        [self.view.layer addAnimation:animation forKey:@"backgroundColor"];
        
    }

    2、关键帧动画:CAKeyframeAnimation

    1. path

    这是一个 CGPathRef  对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让  某一个物体按照这个路径进行动画。这个值默认是nil  当其被设定的时候  values  这个属性就被覆盖 

    2. values

    一个数组,提供了一组关键帧的值,  当使用path的 时候 values的值自动被忽略。

    下面是改变依次改变view的颜色

    -(void)animationOfCAKeyframeAnimation
    {
        CAKeyframeAnimation *animation=[CAKeyframeAnimation animation];
        //设置属性值
        animation.values=[NSArray arrayWithObjects:
                          (id)self.view.backgroundColor,
                          (id)[UIColor yellowColor].CGColor,
                          (id)[UIColor greenColor].CGColor,
                          (id)[UIColor blueColor].CGColor,nil];
        animation.duration=3;
        animation.autoreverses=YES;
        //把关键帧添加到layer中
        [self.view.layer addAnimation:animation forKey:@"backgroundColor"];
    }

    3、使用路径制作动画:CAKeyframeAnimation

    -(void)animationOfCAKeyframeAnimationPath
    {
        //初始化一个View,用来显示动画
        UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 20, 20)];
        redView.backgroundColor=[UIColor redColor];
        
        [self.view addSubview:redView];
        
        CAKeyframeAnimation *ani=[CAKeyframeAnimation animation];
        //初始化路径
        CGMutablePathRef aPath=CGPathCreateMutable();
        //动画起始点
        CGPathMoveToPoint(aPath, nil, 20, 20);
        CGPathAddCurveToPoint(aPath, nil, 
                              160, 30,//控制点
                              220, 220,//控制点 
                              240, 380);//控制点
        
        ani.path=aPath;
        ani.duration=10;
        //设置为渐出
        ani.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
        //自动旋转方向
        ani.rotationMode=@"auto";
        
        [redView.layer addAnimation:ani forKey:@"position"];
    }

    源码下载:点击下载源码

    原文:http://blog.csdn.net/kqjob/article/details/10417461

    ---文章完---

    最后,推荐一个神器。

    内测宝

    内测宝个人觉得比TestFlight更简单好用,开发者只需要简单把打好的ipa包上传上去,生成二维码,测试人员在手机上扫码二维码,就可以直接安装最新的测试版本了,好用的让人想哭。

  • 相关阅读:
    .Net 应用中使用dot trace进行性能诊断
    MyBatis批量增删改查操作
    hadoop2.7.2基于centos全然分布式安装
    HDOJ 3666 THE MATRIX PROBLEM 差分约束
    BZOJ1635: [Usaco2007 Jan]Tallest Cow 最高的牛
    BZOJ1089: [SCOI2003]严格n元树
    BZOJ1406: [AHOI2007]密码箱
    BZOJ1270: [BeijingWc2008]雷涛的小猫
    BZOJ1211: [HNOI2004]树的计数
    BZOJ2729: [HNOI2012]排队
  • 原文地址:https://www.cnblogs.com/lloydsheng/p/3663188.html
Copyright © 2011-2022 走看看