2011-07-05 2 views
0

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

ответ

3

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

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

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

UIKIT_EXTERN NSString *const UIDeviceOrientationDidChangeNotification; 

- (void)beginGeneratingDeviceOrientationNotifications;  // nestable 
- (void)endGeneratingDeviceOrientationNotifications; 
2

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

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

Предполагая, что вы установили -(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 

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

Смежные вопросы