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

阿扎尔

我正在旋转一个正方形图像视图,其宽度为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用imagerotate()旋转图像后,如何获取新的宽度和高度?

如何从Glide获取图像的宽度和高度

旋转后如何获取元素的真实宽度和高度?

如何在OpenCV中获取图像的宽度和高度?

如何在Android中获取显示图像的宽度和高度?

如何获取图像的宽度和高度像素,并使框大小相同?

Javascript,如何从 blob 中获取图像宽度和高度?

图像旋转-根据图像的高度和宽度调整画布的大小

旋转图像宽度和高度不均匀的图像

PHPQuery-获取图像的宽度和高度

使用FileReader获取图像的宽度和高度

从dataurl获取图像的高度和宽度

单击鼠标获取图像的宽度和高度

获取上传图像的宽高比(宽度和高度)

jQuery:无法获取图像的宽度和高度

通过屏幕旋转更改图像宽度和高度

设置变换后图像的宽度和高度:旋转

如何更改图像的宽度和高度?

如何设置图像的高度和宽度相同?

在图像视图中裁剪后如何获取从图库中选取的图像的宽度和高度

ImageIO-从加载的图像获取图像的宽度和高度

缩放和渲染反应组件后如何获取图像的宽度和高度

角度-如何获取元素的宽度和高度

如何获取表格的内部宽度和高度

如何获取视图的高度和宽度?

如何获取视图框的宽度和高度

如何从 DockPanel 获取高度和宽度?

如何在 Javascript 上测量旋转元素的宽度和高度?

如何使用蜡染获取SVG图像的图像大小(宽度/高度)