zoukankan      html  css  js  c++  java
  • ca动画


    //动画上下文
    -(void)animationOfUIKit
    {
        UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];
        redView.backgroundColor=[UIColor redColor];
        
        [self.view addSubview:redView];
        //开始动画
        [UIView beginAnimations:@"test" context:nil];
        //动画时长
        [UIView setAnimationDuration:1];
        /*
         *要进行动画设置的地方
         */
        
        redView.backgroundColor=[UIColor blueColor];
        redView.frame=CGRectMake(50, 50, 200, 200);
        redView.alpha=0.5;
        
        
        //动画结束
        [UIView commitAnimations];
    }
    //通过代码块

    -(void)animationOfBlock
    {
        //初始化一个View,用来显示动画
        UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];
        redView.backgroundColor=[UIColor redColor];
        
        [self.view addSubview:redView];
        
        [UIView animateWithDuration:1 //时长
                              delay:0 //延迟时间
                            options:UIViewAnimationOptionCurveEaseInOut//动画效果
                         animations:^{
                             
                             //动画设置区域
                             redView.backgroundColor=[UIColor blueColor];
                             redView.frame=CGRectMake(50, 50, 200, 200);
                             redView.alpha=0.5;
                             
                         } completion:^(BOOL finish){
                             //动画结束时调用
                             //............
                         }];
        
        
    }




    //CA动画
    - (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"];
    }
    //


    //关键帧动画CAKeyframeAnimation

    - (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"];
    }


    //使用路径制作动画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);//控制点
        
        
        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"];
    }

  • 相关阅读:
    全面了解Nginx主要应用场景
    手把手教你构建 C 语言编译器
    Docker镜像原理和最佳实践
    Docker网络深度解读
    PostgreSQL 10.0 preview 功能增强
    阿里沈询:分布式事务原理与实践
    CPU、内存、IO虚拟化关键技术及其优化探索
    原理、方法双管齐下,大神带你细解Redis内存管理和优化---场景研读
    ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0 转
    RabbitMQ学习系列
  • 原文地址:https://www.cnblogs.com/keyan1102/p/4465413.html
Copyright © 2011-2022 走看看