我正在旋转一个正方形图像视图,其宽度为160,但旋转后宽度变为与高度相同的190。
通过此功能旋转
func transformUsingRecognizer(_ recognizer: UIGestureRecognizer, transform: CGAffineTransform) -> CGAffineTransform {
if let rotateRecognizer = recognizer as? UIRotationGestureRecognizer {
return transform.rotated(by: rotateRecognizer.rotation)
}
return transform
}
尝试了这两个代码以获取正确的宽度
imgDraggingImage.bounds.size.width
imgDraggingImage.frame.height
但没有成功。
旋转前宽度160的图像
旋转后的图像,宽度不变,但现在返回宽度190
似乎宽度值取决于旋转,因为任何不同的角度它都会返回不同的宽度值。但是我需要正确的值,在这种情况下是160。请帮助
extension CGAffineTransform {
var angle: CGFloat { return atan2(-self.c, self.a) }
var angleInDegrees: CGFloat { return self.angle * 180 / .pi }
var scaleX: CGFloat {
let angle = self.angle
return self.a * cos(angle) - self.c * sin(angle)
}
var scaleY: CGFloat {
let angle = self.angle
return self.d * cos(angle) + self.b * sin(angle)
}
}
上面的扩展解决了这个问题。
self.imgDraggingImage.transform.scaleX
self.imgDraggingImage.transform.scaleY
上面的代码scaleX即使旋转也可以改变图像的宽度(比例),而scaleY可以改变图像高度的百分比。
其中imgDraggingImage.bounds.size.width给出恒定的图像大小,即使图像已缩放。
旋转图像时imgDraggingImage.frame.width创建问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句