Подтвердить что ты не робот

IOS поддерживает соотношение сторон UIImageView, но ширину заполнения

Это мое первое приложение с нуля в iOS 8 и XCode 6, поэтому эти проблемы с интервалом меня убивают. В ниже вы можете видеть, что у меня есть UIImageView, который я хочу быть квадратом, но я хочу, чтобы он растянулся и по ширине экрана. Он имеет значение ширины и высоты, поэтому, когда приложение работает, экран шире, поэтому он заканчивается крошечной коробкой в ​​верхнем левом углу. Я пробовал возиться со всеми ограничениями, о которых я мог думать, но когда я сдерживаю это, изображение взрывается до полного размера и покрывает все, что происходит на экране. Как я могу растянуть его и сохранить соотношение сторон 1 к 1?

enter image description here

ИЗМЕНИТЬ Хорошо, я ошибся. Это не UIImageView, который не настраивается, это весь взгляд. enter image description here

4b9b3361

Ответ 1

Ограничьте обе стороны и сверху для просмотра. Вы также можете сказать, что, например, ширина/высота может быть >= 320, что иногда помогает. Но помните, что он будет работать только в портрете, когда вы поворачиваете пользовательский интерфейс к пейзажу, изображение не может оставаться квадратным, одновременно заполняя ширину и полностью отображаясь на экране.

РЕДАКТИРОВАТЬ: изображение не должно пытаться растягиваться за пределы экрана (в портрете), если вы не говорите ему, что это должно быть "это далеко снизу"

РЕДАКТИРОВАТЬ - 2: Установите ограничения просмотра фона для просмотра. все 4.

Ответ 2

Используйте режим содержимого изображения:

[self.imageView setContentMode:UIViewContentModeScaleAspectFill];

Похоже, вы также хотите, чтобы ширина кадра заполняла экран. Используйте эти ограничения:

  • Расстояние до вершины, слева и справа до 0.
  • Высота равна ограничению ширины.
  • Соотношение изображения 1:1.

Затем изображение должно быть соответствующим образом изменено.

Ответ 3

Я бы установил фрейм программно и вообще не использовал ограничения. Для этого

  • Свяжите ImageView с выходом в своем контроллере просмотра
  • Установите фрейм так, чтобы два значения были равны

    frame.size.width/frame.size.height