ios - Swift:如何获取旋转图像的高度和宽度。

标签 ios swift xcode image uiimageview

我正在旋转一个宽度为 160 的方形 ImageView ,但旋转后宽度变为 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前的图像

enter image description here

旋转后的图像,宽度没有变化,但现在返回宽度 190

enter image description here

似乎宽度值取决于旋转,因为任何不同的角度都会返回不同的宽度值。但我需要正确的值,在本例中是 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在图像旋转时产生问题。

关于ios - Swift:如何获取旋转图像的高度和宽度。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49556668/

相关文章:

ios - 如何从联系人框架获取帐户名称

iphone - 无法获取日历标题

ios - 使用 ionic for ios 构建 html5 应用程序

php - 如何将验证错误从 php 或 segue 成功返回到 swift

iphone - 内存泄漏导致应用崩溃

ios - 从另一个 UIViewController 获取 PickerView 的选项

ios - 如何在swift中实现平行 map

ios - 使用 UIAlertControllerStyle.ActionSheet 在 UIAlertController 中取消按钮

swift - 我需要帮助快速使用陀螺仪

ios - WatchKit 扩展 - 无法在 Watch 上找到名为 “XXX” 的图像