2014-04-14 3 views
2

В настоящее время я не могу установить 2 режима содержимого одновременно. Но я хочу, чтобы изображение было масштабировано и центрировано. Как это сделать?Center & Aspect Fit Image

@property (weak, nonatomic) IBOutlet UIView *windowOut; 

self.windowOut.layer.borderColor = [UIColor redColor].CGColor; 
self.windowOut.layer.borderWidth = 3.0f; 

UIImage *face = [UIImage imageNamed:@"face.png"]; 

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame]; 
imageView.contentMode = UIViewContentModeScaleAspectFit; 
imageView.contentMode = UIViewContentModeCenter; 

[imageView setImage:face]; 
[self.windowOut addSubview:imageView]; 

Это изображение является результатом с указанным кодом: enter image description here

Это изображение является результатом, когда "imageView.contentMode = UIViewContentModeCenter; " закомментирована: enter image description here

EDIT: Это изображение является результатом, когда я комментирую оба contentModes: enter image description here

+0

Разве 'UIViewContentModeScaleAspectFit' не имеет центра изображения? –

+0

nope it move about% 10 right for some weird reason – Esqarrouth

+0

добавленные изображения ... – Esqarrouth

ответ

2

Причина, по которой не центрирован здесь:

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.frame]; 

[self.windowOut addSubview:imageView]; 

Это работает только тогда, когда windowOut случается находиться в (0/0). .frame дает рамку в системе координат супервизора. Если windowOut находится, скажем, (20/20) в пределах своего наблюдения (self.view?), То imageView будет находиться по адресу (40,40).

Используйте вместо этого bounds. Это то же самое, но в пределах собственной системы координат.

UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.windowOut.bounds]; 
[self.windowOut addSubview:imageView]; 
+0

Ваше третье изображение просто доказательство. 'UIViewContentModeScaleAspectFit' будет. –

+0

ваш код отлично подходит для симулятора, но когда я тестировал его на устройстве, он выглядит как 3-е изображение, но сфокусировано. В чем может быть проблема? – Esqarrouth

+0

Когда вы наблюдаете странные вариации между симулятором и устройством, тогда: a) удалите приложение из симулятора, b) удалите приложение с устройства, c) очистите и перестройте. –

0

Если образViewView установлен в тот же кадр, что и его супервизор, а режим содержимого - UIViewContentModeScaleAspectFit, то он должен быть центрирован по определению. Удачи!

+0

добавлены изображения ... – Esqarrouth

+0

Просто любопытно, вы пытались не устанавливать какой-либо режим контента, другими словами, оставляя режим содержимого по умолчанию? – user2105505

+0

Да, я думаю, проблема не в том, что режим содержимого кажется. Я добавил фрейм после, теперь я вижу, что по какой-то причине исходное изображение также имело проблемы с центрированием. Я отредактировал сообщение – Esqarrouth