#iphone #objective-c #ios #uiimageview #uiinterfaceorientation
#iPhone #objective-c #iOS #uiimageview #ориентация на интерфейс ui
Вопрос:
В моем приложении для iPad в настоящее время у меня есть фоновое изображение png размером 1024×1024 пикселей, и я устанавливаю его, используя следующее
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background-image"]];
[self.view addSubview:imgView];
[self.view sendSubviewToBack:imgView];
[imgView release];
Это исправляет UIImageView, и вид центрируется в альбомной ориентации, однако в портретной он смещен от центра.
Я поиграл с некоторыми настройками contentMode, но не повезло, я либо получаю портретное изображение в центре, либо альбомную ориентацию в центре, но не оба.
Не мог бы кто-нибудь, пожалуйста, помочь мне с центрированием UIImageView как в портретной, так и в альбомной ориентации после поворота.
Заранее спасибо, Мэтт
Ответ №1:
Вам необходимо установить contentMode
, frame
и соответствующую маску автоматического изменения размера:
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background-image"]];
imgView.frame = self.view.bounds;
imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
imgView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:imgView];
[self.view sendSubviewToBack:imgView];
[imgView release];
Комментарии:
1. Идеальный… Не могу поверить, что я пропустил маску автоматического изменения, я пытался применить UIViewAutoresizingFlexibleWidth к contentMode. Это сводило меня с ума в течение последнего дня или около того. Как лучше всего отображать это UIImageView в режиме «за всеми» в моем приложении? В настоящее время для всех параметров view backgroundColor установлено значение clearColor, и я поместил приведенный выше код в свой viewWillAppear на навигационном контроллере. Большое спасибо omz
2. добавьте imageview в главное окно и сделайте все контроллеры прозрачными. но автоматическое изменение размера для этого не сработает. вам нужно вручную повернуть окно
3. @rahul есть ли у вас какие-либо примеры кода о том, как выполнить поворот окна вручную? Считается ли это лучшей практикой, чем то, что я сделал? поскольку навигационный контроллер всегда будет доступен, он позаботится о вращении.
4. @Мэтт Прайс нашел в Google, как установить ориентацию для строки состояния. при повороте окно строки состояния будет вращаться.
Ответ №2:
Проверьте autoresizingMask
свойство на наличие imageView
.
Комментарии:
1. Спасибо 7kv7, omz дал немного более подробный ответ и пример кода, но большое спасибо за ответ. Ключевым моментом была маска автоматического изменения размера.