UIImageView: как показать масштабированное изображение?

Я новичок в разработке приложений для iOS, и я начал учиться с этого замечательного руководства:

Начать разработку приложений для iOS (Swift)

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/WorkWithViewControllers.html#//apple_ref/doc/uid/TP40015214-CH6-SW1

Все выглядит отлично, но при попытке загрузить изображение из «Кадры» на симуляторе я получаю изображение, показанное слишком большим и заполняющее весь экран симулятора iPhone, а не просто отображающееся в поле UIImageView, как показано на обучающих изображениях.

Забавный факт, что, загрузив правильный проект, представленный в конце урока (см. внизу страницы), я получаю ту же проблему.

Погуглив, у меня есть несколько идей, чтобы вставить:

    // The info dictionary may contain multiple representations of the image. You want to use the original
    guard let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage else {
        fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
    }

    // Set photoImageView to display the selected image
    photoImageView.image = selectedImage
    photoImageView.contentMode = UIViewContentMode.scaleAspectFit

    // Dismiss the picker
    dismiss(animated: true, completion: nil)

после загрузки изображения из фотопленки, но безрезультатно...

Я использую Xcode 9.2 с целью развертывания 11.2 и iPhone 8 plus в качестве цели для симулятора.

Любая помощь приветствуется.


person Francesco Piraneo G.    schedule 08.02.2018    source источник


Ответы (1)


Это происходит потому, что пример кода ограничивает только пропорцию UIImageView (ограничение 1:1, которое вы добавили в раскадровке). Таким образом, он всегда будет держать ваш образ в квадрате, но не будет ограничивать размер.

Как видно из примера, вы ввели размер заполнителя, который сохраняется только до тех пор, пока вы не установите на него какое-либо изображение. Когда вы вводите новое изображение в UIImageView, оно изменяется на размер изображения, которое вы установили (в вашем случае, возможно, большее изображение для рулона камеры). Наверное, поэтому он становится таким большим.

Я думаю, что простой способ исправить это - добавить другие ограничения в раскадровку, чтобы ограничить размер (например, фактический размер или ограничения границ).

person GustavoAzOl    schedule 08.02.2018
comment
Да! Оно работает! Наконец-то я добавил кострейны в UIImageView... Большое спасибо. - person Francesco Piraneo G.; 08.02.2018