2015-09-21 4 views
0

Я хочу сказать в каждом представлении контроллера, какую ориентацию он поддерживает и ограничивает их. Это то, что я пробовал:Ограничение ориентации на контроллер представления

Ни одно из решений, кажется, работает. Или я пропущу что-то важное? Как я могу ограничить ориентацию, для которой диспетчер просмотра A имеет только ландшафт, контроллер просмотра B является только портфолио, а контроллер просмотра C может отображаться во всех доступных ориентациях?

ответ

1

Переопределение GetSupportedInterfaceOrientations() в контроллере представления должны решить эту проблему:

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()  { 
    return UIInterfaceOrientationMask.LandscapeRight; 
} 

Ориентации вы возвращаетесь здесь будут пересекаться с разрешенными ориентациями приложения в (Свойства проекта) или с тем, что вы позволяете в ваше приложение делегата. Поэтому не забудьте указать все ориентации или максимальный набор ориентаций, которые вы хотите поддержать.

См. Здесь documentation.

+0

Спасибо тонну! Я удалил переопределение для 'ShouldAutorotate()' в моих контроллерах представления и теперь он работает. Я использую свой [* CustomNavigationController *] (http://stackoverflow.com/a/26012695/426227). Еще один вопрос: если я перехожу из контроллера вида A (только пейзаж), чтобы просмотреть контроллер B (только портрет), то ориентация не обновляется. Я нахожусь в ландшафте, несмотря на то, что контроллер просмотра B позволяет только портрет. Только после поворота поведение снова вернулось. – testing

+0

Как вы перемещаетесь от A до B? 'UINavigationController' push? – Krumelur

+0

Да 'NavigationController.PushViewController (testViewController, true);' – testing

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