Ios 斯威夫特:尝试旋转绘制的形状?
我在尝试旋转以下代码中绘制的形状时遇到问题:我尝试使用:Ios 斯威夫特:尝试旋转绘制的形状?,ios,swift,rotation,core-graphics,core-animation,Ios,Swift,Rotation,Core Graphics,Core Animation,我在尝试旋转以下代码中绘制的形状时遇到问题:我尝试使用: triangle.transform = triangle.transform.rotated(by: 3.14159) 但这给了我一个错误“类型'catTransferM3D'的值没有成员'rotated'”。我不知道如何旋转这个形状 override func viewDidLoad() { super.viewDidLoad() let trianglePath = UIBezierPath() trian
triangle.transform = triangle.transform.rotated(by: 3.14159)
但这给了我一个错误“类型'catTransferM3D'的值没有成员'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)
}
使用此选项旋转三角形,可以使用
cGraffeTransform
triangle.setAffineTransform(CGAffineTransform(rotationAngle: .pi))
或者使用CATTransferorM3D
,通过pi在Z轴上旋转
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
}
}
希望这有助于使用它旋转三角形,您可以使用
cGraffineTransform
triangle.setAffineTransform(CGAffineTransform(rotationAngle: .pi))
或者使用CATTransferorM3D
,通过pi在Z轴上旋转
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
}
}
希望这有帮助提示:3D变换不支持围绕未指定轴旋转是有道理的:-)@NicolasMiari我以为我使用的变换是2D?我应该使用CATTransferm3dMakeRotation吗?提示:3D变换不支持围绕未指定轴旋转是有道理的:-)@NicolasMiari我以为我使用的变换是2D?我应该使用CATTransformM3dMakeRotation吗?给我错误:“无法将'cGraffinetTransform'类型的值分配给'cGTransform'”@diet7up抱歉,我没有看到您的三角形是shapeLayer,我将更新我的答案properly@Reiner这会旋转整个层吗?还是只是三角形?因为当使用此代码时,形状disappears@diet7up再次检查我的答案是否已编辑,问题是您的
CAShapeLayer的帧
感谢它为我工作:)当我将其放入动画中时,虽然它只是加载旋转,但如何使其在加载后旋转?给我错误:“无法将“CGAffineTransform”类型的值分配给“CGTransform3D”类型”“@diet7up抱歉,我没有看到你的三角形是一个变形器,我会更新我的答案properly@Reiner这会旋转整个层吗?还是只是三角形?因为当使用此代码时,形状disappears@diet7up再次检查我的答案是否已编辑,问题是您的CAShapeLayer的帧
感谢它为我工作:)当我将其放入动画中时,虽然它只是加载旋转,但如何使其在加载后旋转?