Objective-c с использованием UIInterfaceOrientationMask для управления ориентацией

У меня есть приложение с 4 контроллерами просмотра. Один должен быть представлен только в ландшафтном режиме. Остальные 3 могут быть как альбомными, так и портретными.

В моей области «Информация о развертывании», «Ориентация устройства» установлены флажки «Вверху вниз», «Пейзаж влево» и «Пейзаж вправо». В Info.plist у меня есть 3 поддерживаемых ориентации интерфейса: альбомная влево, альбомная вправо и вертикальная верхняя кнопка «Домой».

В моем контроллере представления, где я хочу ТОЛЬКО пейзаж, у меня есть: - (BOOL) shouldAutorotate {return YES; }

-(UIInterfaceOrientationMask) supportedInterfaceOrientations {
    return   UIInterfaceOrientationMaskLandscapeLeft+UIInterfaceOrientationMaskLandscapeRight;
}

В трех других контроллерах представления у меня есть: - (BOOL) shouldAutorotate {return YES; }

-(UIInterfaceOrientationMask) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

Со всеми этими настройками: 1) Вид, который должен быть только в альбомной ориентации, есть только в альбомной ориентации, так что это хорошо. 2) Остальные 3 вида могут отображаться в альбомном левом, альбомном правом и портретном режимах с помощью кнопки вверху. 3) Когда я пытаюсь повернуть экран в другое портретное положение, он не поворачивается.

Итак, я меняю страницу развертывания или страницу Info.plist, чтобы включить этот 4-й вариант, который не отмечен. В результате три других вида вращаются нормально, но вид в альбомном режиме теперь превращается в портретный.

Что мне нужно сделать, чтобы только мой первый вид был пейзажем, а остальные 3 вращались как-нибудь?


person Mark    schedule 12.01.2017    source источник


Ответы (1)


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

https://stackoverflow.com/a/24928474/6438500

person Sunny    schedule 13.01.2017
comment
Спасибо за ответ. - person Mark; 14.01.2017
comment
Вырезание и вставка кода, как показано, в контроллер представления сгенерировали 2 ошибки, касающиеся использования необъявленной переменной appDelegate. - person Mark; 14.01.2017
comment
Здесь appDelegate - это экземпляр AppDelegate. Вам необходимо создать свой экземпляр AppDelegate. - person Sunny; 14.01.2017