欲计算边缘的x位置(左上,右上,左下和右下),其具有目前一个CGAffineTransformation一个UIView的用rotationAngle激活。在图片中,我想计算最右边红圈的x位置。
本文介绍如何在Obj-c中执行此操作,我相信:http://www.informit.com/articles/article.aspx?p=1951182。我试图将其转换为swift 4,但我不得不做出很多更改。我来到这个:
func offsetPoint(toParentCoordinates aPoint: CGPoint) -> CGPoint {
return CGPoint(x: aPoint.x + self.cardView.center.x, y: aPoint.y + self.cardView.center.y)
}
func point(inViewCenterTerms aPoint: CGPoint) -> CGPoint {
return CGPoint(x: aPoint.x - self.cardView.center.x, y: aPoint.y - self.cardView.center.y)
}
func point(inTransformedView aPoint: CGPoint, someTransformation: CGAffineTransform) -> CGPoint {
let offsetItem: CGPoint = point(inViewCenterTerms: aPoint)
let updatedItem: CGPoint = offsetItem.applying(someTransformation)
let finalItem: CGPoint = offsetPoint(toParentCoordinates: updatedItem)
return finalItem
}
func originalFrame(someView: UIView, someTransformation: inout CGAffineTransform) -> CGRect {
let currentTransform: CGAffineTransform = someTransformation
someTransformation = CGAffineTransform.identity
let originalFrame: CGRect = someView.frame
someTransformation = currentTransform
return originalFrame
}
但我被困在其余的。我在想,如果Swift 4中的事情变得更简单,或者如何继续其余的代码来使其工作。
您是否尝试过使用简单的坐标计算:let x = r * sin(angle)并设y = r * cos(angle)? r是半径,在你的情况下,它是对角线的一半长度。 – Woof