Как получить х и у позиции UIImage в UIImageView? - PullRequest
0 голосов
/ 20 мая 2019

Я хочу получить исходное положение x и y UIImage, когда мы устанавливаем его в UIImageView с scaleAspectFill.

Как мы знаем в scaleAspectFill, часть фрагмента обрезается. Так что согласно моему требованию я хочу получить значения x и y (это может быть - значение, которое я не знаю.).

Вот оригинальное изображение из галереи

original image

Теперь я устанавливаю это изображение для просмотра моего приложения.

Clipped image in my view

Итак, как указано выше, я хочу получить скрытые x, y позиции изображения, которые обрезаются.

Может кто-нибудь сказать, как его получить?

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Использовать следующее расширение

extension UIImageView {

    var imageRect: CGRect {
        guard let imageSize = self.image?.size else { return self.frame }

        let scale = UIScreen.main.scale

        let imageWidth = (imageSize.width / scale).rounded()
        let frameWidth = self.frame.width.rounded()

        let imageHeight = (imageSize.height / scale).rounded()
        let frameHeight = self.frame.height.rounded()

        let ratio = max(frameWidth / imageWidth, frameHeight / imageHeight)
        let newSize = CGSize(width: imageWidth * ratio, height: imageHeight * ratio)
        let newOrigin = CGPoint(x: self.center.x - (newSize.width / 2), y: self.center.y - (newSize.height / 2))
        return CGRect(origin: newOrigin, size: newSize)
    }

}

Использование

let rect = imageView.imageRect
print(rect)

UI Test

let testView = UIView(frame: rect)
testView.backgroundColor = UIColor.red.withAlphaComponent(0.5)
imageView.superview?.addSubview(testView)
0 голосов
/ 20 мая 2019

Если вы хотите показать изображение как в галерее, вы можете использовать ограничения "H: | [v0] |" и "V: | [v0] |" и в imageview используйте .aspectFit

А если вам нужен размер изображения, вы можете использовать imageView.image! .Size и рассчитать количество разрезаемого изображения. В aspectFill ширина соответствует ширине экрана и, соответственно, высота увеличивается. Так что, я думаю, вы можете узнать, сколько изображений обрезается.

...