美文网首页Swift基础Swift - UI
Swift-transform、transform3D属性

Swift-transform、transform3D属性

作者: 爱玩游戏的iOS菜鸟 | 来源:发表于2020-03-05 14:04 被阅读0次

    transform

    1. 基于View的形变
          UIView.animate(withDuration: 5.0, animations: {
              //每次形变都是针对原点
              self.childView.transform = CGAffineTransform(translationX: 50, y: 50)
              self.childView.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
              self.childView.transform = CGAffineTransform(rotationAngle: 0.5)
              //self.parentV.transform = CGAffineTransform.identity.translatedBy(x: -100, y: 0).rotated(by: 0.5).scaledBy(x: 0.5, y: 0.5)
    
          }) { (complete) in
              kLog("移动完成")
              //可在已经形变的基础上做形变
              self.childView.transform = self.parentV.transform.translatedBy(x: 50, y: 50)
              self.childView.transform = self.parentV.transform.scaledBy(x: 0.5, y: 0.5)
              self.childView.transform = self.parentV.transform.rotated(by: 0.5)
          }
    
    CoreGraphics库中CGAffineTransform初始化及用法

    transform3D

    1. 基于View的形变
    UIView.animate(withDuration: 5.0, animations: {
                //以初始位置为基准,x轴y轴z轴移动相应d单位(平面上看不出z轴的变化)
                self.parentV.transform3D = CATransform3DMakeTranslation(50, 50, 50)
                //以初始位置为基准,x轴y轴z轴移动相应缩放比例(平面上看不出z轴的变化)
                self.parentV.transform3D = CATransform3DMakeScale(0.5, 0.5, 0.5)
                //以初始位置为基准,当x,y,z值为0时,代表在该轴方向上不进行旋转,当值为1时,代表在该轴方向上进行逆时针旋转,当值为-1时,代表在该轴方向上进行顺时针旋转
                self.parentV.transform3D = CATransform3DMakeRotation(CGFloat(M_PI), 0, 1, 0)
                
            }) { (complete) in
                kLog("移动完成")
                //可在已经形变的基础上做形变
                self.parentV.transform3D = CATransform3DTranslate(self.parentV.transform3D, 50, 50, 50)
                self.parentV.transform3D = CATransform3DScale(self.parentV.transform3D, 0.5, 0.5, 0.5)
                self.parentV.transform3D = CATransform3DRotate(self.parentV.transform3D, CGFloat(M_PI), 0, 1, 0)
            }
    
    1. 基于layer的形变
    UIView.animate(withDuration: 5.0, animations: {
                //每次形变都是针对原点
                self.parentV.layer.transform = CATransform3DMakeScale(0.5, 0.5, 0.5)
                self.parentV.layer.transform = CATransform3DMakeRotation(180, 1, 0, 0)
                self.parentV.layer.transform = CATransform3DMakeTranslation(10, 10, 0)
            }) { (complete) in
                kLog("移动完成")
                //可在已经形变的基础上做形变
                self.parentV.layer.transform = CATransform3DScale(self.parentV.layer.transform, 0.5, 0.5, 0.5)
                self.parentV.layer.transform = CATransform3DRotate(self.parentV.layer.transform, 180, 1, 0, 0)
                self.parentV.layer.transform = CATransform3DTranslate(self.parentV.layer.transform, 10, 10, 0)
            }
    

    相关文章

      网友评论

        本文标题:Swift-transform、transform3D属性

        本文链接:https://www.haomeiwen.com/subject/sqrxrhtx.html