Swift3 如何将CGPoint从横向旋转到纵向图像方向?
我有一个画三角形的视图。点“A”Swift3 如何将CGPoint从横向旋转到纵向图像方向?,swift3,uibezierpath,cashapelayer,cgpoint,Swift3,Uibezierpath,Cashapelayer,Cgpoint,我有一个画三角形的视图。点“A”leftPost和点“B”rightPost始终是静态的,彼此之间的距离相同。点击UIImageView可确定“尖端”或点“C”。当图像处于纵向模式时,我可以根据点的坐标重新创建UIImageView 但是,我需要以横向模式显示UIImage并表示相同的三角形。如何“旋转”坐标以实现此目的?我还暗示我没有从纵向和横向旋转屏幕。应用程序始终处于横向 import UIKit class ViewController: UIViewController {
leftPost
和点“B”rightPost
始终是静态的,彼此之间的距离相同。点击UIImageView可确定“尖端”或点“C”。当图像处于纵向模式时,我可以根据点的坐标重新创建UIImageView
但是,我需要以横向模式显示UIImage并表示相同的三角形。如何“旋转”坐标以实现此目的?我还暗示我没有从纵向和横向旋转屏幕。应用程序始终处于横向
import UIKit
class ViewController: UIViewController {
let bezierPath = UIBezierPath()
let shapeLayer = CAShapeLayer()
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let shotGesture = UITapGestureRecognizer(target: self, action: #selector(shotOnNet))
imageView.addGestureRecognizer(shotGesture)
//Enable tapping on screen
imageView.isUserInteractionEnabled = true
}
func setupBezierPath(tip: CGPoint) {
let leftPost = CGPoint(x: 20, y: 50)
let rightPost = CGPoint(x: 100, y: 50)
bezierPath.move(to: leftPost)
bezierPath.addLine(to: rightPost)
bezierPath.addLine(to: tip)
bezierPath.close()
}
func setupShapeLayer() {
shapeLayer.path = bezierPath.cgPath
shapeLayer.fillColor = UIColor.red.cgColor
shapeLayer.lineWidth = 1.0
shapeLayer.strokeColor = UIColor.black.cgColor
}
func shotOnNet(_ sender: Any) {
let shot = (sender as! UITapGestureRecognizer).location(ofTouch: 0, in: imageView)
setupBezierPath(tip: shot)
setupShapeLayer()
imageView.layer.addSublayer(shapeLayer)
}
}
是否有理由需要修改坐标,而不是简单地对整个
UIImageView
应用旋转变换?是的,我实际上在CoreData中存储点击手势的值,以便重新创建三角形。上面的代码只是一个简单的例子。你找到解决方案了吗。如果有,请分享。