• CATransform3D的使用以及各个参数的含义


    1. 缩放

    CABasicAnimation *theAnimation=[CABasicAnimation animationWithKeyPath:@"transform"];
        //x,y,z放大缩小倍数
        CATransform3D transform=CATransform3DMakeScale(0.5, 0.5, 1.0);
        NSValue *value=[NSValue valueWithCATransform3D:transform];
        [theAnimation setToValue:value];
        
        
        transform=CATransform3DMakeScale(1.0, 1.0, 1.0);
        value=[NSValue valueWithCATransform3D:transform];
        
        [theAnimation setAutoreverses:YES];  //原路返回的动画一遍
        [theAnimation setDuration:1.0];//执行动画的时间
        [theAnimation setRepeatCount:2];//执行动画的次数
        
        [layer addAnimation:theAnimation forKey:nil];

    2.动画旋转

    CABasicAnimation *theAnimation=[CABasicAnimation animationWithKeyPath:@"transform"];
        CATransform3D transform=CATransform3DMakeRotation(90*M_PI/180, 1, 1, 0);//
        NSValue *value = [NSValue valueWithCATransform3D:transform];
        [theAnimation setToValue:value];

       /*
         angle:旋转的弧度,所以要把角度转换成弧度:角度 * M_PI / 180。
         
         x:向X轴方向旋转。值范围-1 --- 1之间
         
         y:向Y轴方向旋转。值范围-1 --- 1之间
         
         z:向Z轴方向旋转。值范围-1 --- 1之间
         向 X轴,Y轴都旋转60度,就是沿着对角线旋转。
         */
        transform = CATransform3DMakeRotation(1, 1, 1, 0);
        value = [NSValue valueWithCATransform3D:transform];
        [theAnimation setFromValue:value];
        theAnimation.duration=2;
        theAnimation.autoreverses=YES;
        [layer addAnimation:theAnimation forKey:nil];

    3.组动画

    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"];

        CATransform3D rotateTransform = CATransform3DMakeRotation(1.57, 0, 0, -1);
        CATransform3D scaleTransform = CATransform3DMakeScale(2, 2, 2);
        //(CGFloat tx,CGFloat ty, CGFloat tz ,x,y,z轴的偏移量
        CATransform3D positionTransform = CATransform3DMakeTranslation(1, 200, 0); //位置移动
        CATransform3D combinedTransform =CATransform3DConcat(rotateTransform, scaleTransform); //Concat就是combine的意思
        combinedTransform = CATransform3DConcat(combinedTransform, positionTransform); //再combine一次把三个动作连起来
        
        [anim setFromValue:[NSValue valueWithCATransform3D:CATransform3DIdentity]]; //放在3D坐标系中最正的位置
        [anim setToValue:[NSValue valueWithCATransform3D:combinedTransform]];
        [anim setDuration:5.0f];
        
        [layer addAnimation:anim forKey:nil];
        
        [layer setTransform:combinedTransform];  //如果没有这句,layer执行完动画又会返回最初的state

     
  • 相关阅读:
    hadoop基础学习---数据管理策略
    hadoop基础学习---基本概念
    hadoop配置
    linux配置java环境
    Linux使用expect实现自动登录的脚本
    机器学习系列-寒小阳
    深度学习与计算机视觉系列-寒小阳
    深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
    深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统
    深度学习与计算机视觉系列(10)_细说卷积神经网络
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/5001676.html
Copyright © 2020-2023  润新知