Изображение не привязано к UIImageView - PullRequest
0 голосов
/ 31 августа 2018

У меня есть UIImageView, созданный в Inspector, который я изменяю в своем коде на основе выбранного изображения, которое я получаю из Интернета. Однако при первой загрузке изображения оно отображается в обычном разрешении изображений вместо вновь созданных границ UIImageViews.

Изменение размера UIImageView:

fullScreenImage.bounds.size = CGSize(width: scaledWidth, height: scaledHeight)

Настройка изображения UIImageView

let imageStringURL = images[indexPath.row].urls!["regular"]
let imageURL = URL(string: imageStringURL!)!
let imageData = try! Data(contentsOf: imageURL)
let image = UIImage(data: imageData)
fullScreenImage.image = image

Так выглядит при первом нажатии на изображение для входа в «полноэкранный режим». enter image description here

Вот так это выглядит во второй раз, когда я нажимаю на нее

enter image description here

Не совсем уверен, почему Изображение не ограничивает себя в пределах указанных границ UIImageView

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Я нашел обходное решение. Я попытался установить ContentMode для подгонки аспекта, и я также попытался включить клип в пределах границ в инспекторе, однако ни один из них не работал. Поэтому я просто изучил изменение размера самого UIImage и размещение его в UIImageView. В другом посте я нашел расширение для UIImage, которое изменяет его размер

extension UIImage{
    func resizeImage(newSize: CGSize) -> UIImage {
        // Guard newSize is different
        guard self.size != newSize else { return self }

        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
        self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
        let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return newImage
    }
}

Если кто-нибудь знает лучший способ, пожалуйста, дайте мне знать:)

0 голосов
/ 31 августа 2018

Вместо изменения границы вы можете установить свойство UIViewContentMode в UIImageView. Это изменит изображение imageView так, чтобы оно соответствовало границам.

fullScreenImage.contentMode = .scaleAspectFit

...