2010-04-29 3 views
3

Кажется, что независимо от того, какую ориентацию я поддерживаю в своих представлениях в своем приложении, когда я показываю представление с помощью currentModalViewController, приложение привязывается к портретному представлению. Как я могу поддерживать разные ориентации с помощью модального контроллера?Поддержка автоматического поворота для просмотра через текущийModalViewController?

ответ

1

контроллера, который вы Присутствующий с помощью presentModalViewController: анимированный: должно поддерживать любую ориентацию, как правило, с помощью этого метода:

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

С помощью этого метода, когда вы представить свой контроллер в альбомной ориентации, он будет корректно отображаться в ландшафте ориентация тоже.

0

У меня была такая же проблема. Я установил TRUE AutorotateInterfaceOrientation, но в начале моего модального просмотра всегда был представлен портрет, даже если он был ландшафтом. Только если я изменил ориентацию устройства (в эмуляторе), это стало правильным. Но при старте нет! Я не знаю почему, но все зависит от того, где вы представляете представление. Если вы представляете, например, метод viewDidLoad, возникает проблема. Для решения проблемы я вызываю presentModalView из метода, который вызван в viewDidLoad (видимо, это похоже на то же самое). Таким образом, я сделал что-то вроде:

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
    // add this line 
    [self performSelector:@selector(presentModal) withObject:nil afterDelay:0]; 
} 

-(void) presentModal{ 
    // here present your view 
} 

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

Это работает для меня

0

Я просто решил эту проблему для себя путем добавления кода в viewDidAppear. Я думаю, что причина, по которой он не проявлялся в правильной ориентации для меня, заключается в том, что у меня был модальный код show в viewDidLoad, и в этот момент я думаю, что представление только что загрузилось, но ориентация еще не была установлена. Итак, добавив его в viewDidAppear, я работал для меня. Вероятно, вам также повезет в viewWillAppear (потому что к тому времени он должен знать, что такое ориентация, границы, размеры и т. Д.).

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