Я была такая же проблема. Это происходит, когда исходный размер изображения больше (по ширине и/или высоте), чем UIImageView, который его содержит, и размер изображения изменяется с помощью Aspect Fit, чтобы соответствовать UIImageView.
Здесь ширина изображения больше, чем может поместиться в UIImageView, поэтому Aspect Fit изменяет размер изображения, сохраняя исходное соотношение сторон. Если вы прочитаете размер изображения (через часы или точку останова или что-то еще), вы увидите, что размер изображения составляет (например) 600 (в) x 800 (ш) (соотношение 3: 4). Ширина UIImageView составляет (например) 320 (ш), поэтому отображаемое изображение масштабируется до 240 (в) x 320 (ш) (с сохранением соотношения 3:4). НО ширина изображения по-прежнему ДЕЙСТВИТЕЛЬНО 600 x 800, и, поскольку нет ограничений на высоту UIImageView, размер UIImageView составляет 600 x 320 --> он устанавливает высоту UIImageView на исходную высоту изображения (600), потому что это возможно.
Мое решение таково: (Swift 3)
Добавьте ограничение по высоте в UIImageView в Main.storyboard и свяжите его через Outlet:
@IBOutlet weak var displayimage: UIImageView!
@IBOutlet weak var displayimageHeightConstraint: NSLayoutConstraint!
Затем проверьте, меньше ли UIImageView (ширина), чем изображение, которое оно содержит. Если это так, установите ограничение высоты, чтобы соотношение высоты и ширины UIImageView было таким же, как соотношение сторон изображения:
if displayimage.frame.size.width < (displayimage.image?.size.width)! {
displayimageHeightConstraint.constant = displayimage.frame.size.width / (displayimage.image?.size.width)! * (displayimage.image?.size.height)!
}
Дополнительная операция также возможна, если по бокам изображения есть пробелы из-за проблемы изменения размера, когда высота UIImageView ограничена, а ширина установлена равной исходной ширине изображения.
@IBOutlet weak var displayimageWidthConstraint: NSLayoutConstraint!
if displayimage.frame.size.height < (displayimage.image?.size.height)! {
displayimageWidthConstraint.constant = displayimage.frame.size.height / (displayimage.image?.size.height)! * (displayimage.image?.size.height)!
}
person
Mick
schedule
02.03.2017