Как изменить вид viewcontroller при изменении ориентации в iPhone? - PullRequest
0 голосов
/ 05 июля 2011

Я разрабатываю приложение для iPhone, которое поддерживает 2 ориентации. У меня есть 2 файла UIView для этого контроллера представления. Мне нужно установить соответствующий файл UIView для контроллера представления в соответствии с ориентацией интерфейса устройства. Можете ли вы указать мне, как изменить ориентацию?

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Предполагая, что вы установили -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation для возврата поддерживаемых ориентаций, вы можете использовать следующие методы, которые все могут быть установлены в вашем UIViewController, чтобы проверять изменения ориентации и затем настраивать ваши виды:

// called just before the user interface starts to rotate - my advice would be to use this method to save a copy of the current orientation.
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

// called after the interface has finished rotating. Here, you can compare the old orientation with the new one - if you went from portrait to landscape, then update your views accordingly.
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

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

3 голосов
/ 05 июля 2011

Почему вы хотите использовать два вида для обеих ориентаций? Вы можете установить свойства autoresizemask для элементов управления, если портретный и альбомный режимы имеют одинаковый элемент управления для отображения в одном и том же месте. В противном случае вам нужно использовать два представления в

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

или вы можете получить уведомление об UIDevice

 UIKIT_EXTERN NSString *const UIDeviceOrientationDidChangeNotification;

- (void)beginGeneratingDeviceOrientationNotifications;      // nestable
- (void)endGeneratingDeviceOrientationNotifications;
2 голосов
/ 05 июля 2011

просто дайте этот делегат в вашем контроллере для обеих ориентаций.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
...