UIImageView initWithFrame имеет неправильный размер при использовании self.view.frame

У меня проблема, когда я программно создаю несколько UIImageViews и даю им рамку основного представления, они в конечном итоге становятся вдвое меньше. Я создаю приложение в симуляторе на 3,5-дюймовом экране сетчатки. Я проверил кадр основного вида, и он (в альбомной ориентации) имеет ширину 480 пикселей, высоту 320 пикселей и начало координат (0,0). Он должен занимать ту же часть экрана, что и основной вид (синий на изображении ниже). Я уверен, что упускаю что-то очень простое, но я просто не вижу этого, и поиск немного не дал ответов.

Заранее спасибо за помощь.

ImageViews, как они отображаются в симуляторе


person Ron Dear    schedule 12.05.2014    source источник
comment
Покажите свой соответствующий код, иначе никто не сможет помочь вам найти проблему.   -  person rmaddy    schedule 12.05.2014


Ответы (3)


Во-первых: вам нужно установить contentMode для imageView

imageView.contentMode = UIViewContentModeScaleAspectFill;

Во-вторых: установить кадр изображения по границам просмотра

imageView.frame = self.view.bounds;

Третье: вы используете автоматическую раскладку

person Chau Duong Khong    schedule 12.05.2014
comment
У меня был установлен режим контента AspectModeFit. Таким образом, выполнение обоих из них решило проблему. Большое спасибо за ваш быстрый ответ! - person Ron Dear; 12.05.2014

Есть несколько вещей, которые следует учитывать:

  • Вы уверены, что ваш image/imageView contentMode установлен правильно?

    imageView.contentMode = UIViewContentModeScaleAspectFill;

  • Вы уверены, что у вас правильно установлены ограничения автоматического макета / маски автоматического изменения размера?

  • Вы позаботились о повороте экрана?

Было бы полезно, если бы вы разместили несколько примеров кода. В противном случае очень сложно найти, где именно проблема.

Надеюсь это поможет.

person Max    schedule 12.05.2014

imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];

or

imageView.frame = self.view.bounds;

Также установите маску автоматического изменения размера либо в раскадровке, либо в коде. В коде:

imageView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | 
UIViewAutoresizingFlexibleTopMargin | 
UIViewAutoresizingFlexibleRightMargin | 
UIViewAutoresizingFlexibleLeftMargin | 
UIViewAutoresizingFlexibleHeight | 
UIViewAutoresizingFlexibleWidth;

введите здесь описание изображения

Если вы используете автоматический макет, посмотрите на эту ссылку супервизор с использованием автомакета

person aryaxt    schedule 12.05.2014