UIImageView initWithFrame не е правилен размер при използване на self.view.frame

Имам проблем, при който, когато създам няколко UIImageViews програмно и им дам рамката на основния изглед, те в крайна сметка са наполовина по-малки. Създавам приложението в симулатора на 3,5-инчов ретина екран. Проверих рамката на основния изглед и тя е (в Пейзаж) 480 точки широка, 320 точки висока и началото е в (0,0). Трябва да запълва същата част от екрана като основния изглед (синьо на изображението по-долу). Сигурен съм, че пропускам нещо супер просто, но просто не го виждам и малко търсене наоколо не даде отговори.

Благодаря ви предварително за помощта.

Изгледи на изображения, както се показват в симулатора


person Ron Dear    schedule 12.05.2014    source източник
comment
Покажете вашия съответен код или никой не може да ви помогне да откриете проблема.   -  person rmaddy    schedule 12.05.2014


Отговори (3)


Първо: Трябва да зададете contentMode за imageView

imageView.contentMode = UIViewContentModeScaleAspectFill;

Второ: Задайте рамка на imageFrame според границите на изгледа

imageView.frame = self.view.bounds;

Трето: Използвате автоматично оформление

person Chau Duong Khong    schedule 12.05.2014
comment
Имах режим на съдържание, зададен на AspectModeFit. Така че правенето на двете реши проблема. Благодаря много за бързия отговор! - person Ron Dear; 12.05.2014

Има няколко неща, които трябва да имате предвид:

  • Сигурни ли сте, че вашето изображение/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