【问题标题】:Swift: Trying to rotate a drawn shape?斯威夫特:试图旋转绘制的形状?
【发布时间】:2017-07-25 03:11:47
【问题描述】:

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

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

但这给了我一个错误“'CATransform3D'类型的值没有'旋转'成员”。我不确定如何旋转形状。

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)
}

【问题讨论】:

  • 提示: 3D 变换不支持围绕 未指定 轴旋转是有道理的 :-)
  • @NicolasMiari 我认为我使用的变换是二维的?我应该使用 CATransform3DMakeRotation 吗?

标签: ios swift rotation core-graphics core-animation


【解决方案1】:

用这个来旋转你的三角形,你可以用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
    }
}

希望对你有帮助

【讨论】:

  • 给我错误:“无法将 'CGAffineTransform' 类型的值分配给 'CGTransform3D' 类型”
  • @diet7up 抱歉,我没有看到您的三角形是 shapeLayer,我会正确更新我的答案
  • @Reiner 那么这会旋转整个图层吗?还是只是三角形?因为当使用这段代码时,形状消失了
  • @diet7up 检查我的答案再次被编辑,问题是你的CAShapeLayer的框架
  • 感谢它对我有用 :) 当我将它放入动画时虽然它只是加载旋转,我将如何让它在加载后旋转?
猜你喜欢
  • 1970-01-01
  • 2017-07-22
  • 2017-03-24
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 2017-11-13
  • 2015-08-19
相关资源
最近更新 更多