Swift: 试图旋转绘制的形状?

Swift: Trying to rotate a drawn shape?

我在尝试旋转我在以下代码中绘制的形状时遇到问题:我尝试使用:

triangle.transform = triangle.transform.rotated(by: 3.14159)

但这给了我 "value of type 'CATransform3D' has no member 'rotated'" 的错误。我不确定如何旋转形状。

override func viewDidLoad() {
    super.viewDidLoad()
    let trianglePath = UIBezierPath()
    trianglePath.move(to: CGPoint(x: UIScreen.main.bounds.size.width * 0.5, y: UIScreen.main.bounds.height * 0.5))
    trianglePath.addLine(to: CGPoint(x: (UIScreen.main.bounds.size.width * 0.5) + 100, y: (UIScreen.main.bounds.height * 0.5) - 50))
    trianglePath.addLine(to: CGPoint(x: (UIScreen.main.bounds.size.width * 0.5) + 100, y: (UIScreen.main.bounds.height * 0.5) + 50))
    trianglePath.close()

    let triangle = CAShapeLayer()
    triangle.path = trianglePath.cgPath
    triangle.fillColor = UIColor.gray.cgColor
    self.view.layer.addSublayer(triangle)
}

用这个来旋转你的三角形,你可以用CGAffineTransform

 triangle.setAffineTransform(CGAffineTransform(rotationAngle: .pi))

或使用CATransform3D,沿Z轴旋转pi

 triangle.transform = CATransform3DMakeRotation(.pi, 0, 0, 1)

但是对于这项工作你还需要调整你的CAShapeLayer框架

 triangle.frame = self.view.bounds //this do the trick

显示后动画

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    UIView.animate(withDuration: 0.1) { 
          triangle.setAffineTransform(CGAffineTransform(rotationAngle: .pi)) //this 
          triangle.transform = CATransform3DMakeRotation(.pi, 0, 0, 1) //or this
    }
}

希望对您有所帮助