Можете ли вы отключить ротацию во всем мире в приложении iOS?
У меня есть приложение, состоящее из множества контроллеров представлений... в резюме проекта я установил ориентацию Portrait как единственную поддерживаемую ориентацию устройства.
Однако приложение по-прежнему перепутано, когда оно повернуто сбоку.
Мой вопрос в том, есть ли способ глобально отключить авторотацию через делегат приложения или что-то еще?
Или мне нужно войти во все контроллеры моего представления и добавить метод "shouldAutorotateToInterfaceOrientation"?
Просто не хочу пропустить добавление его к одному или к чему-то...
Спасибо!
Ответы
Ответ 1
в режиме контроллера корневого представления:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
установить 'return NO';
это должно быть сделано для всех представлений.
Ответ 2
В Info.plist разверните "Поддерживаемые ориентации интерфейса" и удалите элементы ландшафта, чтобы ваше приложение работало только в портретном режиме.
Ответ 3
После попыток установить в методах UIViewController shouldAutorotate
и supportedInterfaceOrientation
, без каких-либо успехов в iOS6, я нашел, что наиболее эффективным является его установка в делетете приложения.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
Однако возвращение UIInterfaceOrientationMaskPortraitUpsideDown
сбило мое приложение. Я не знаю, что я делал неправильно!
Ответ 4
В info.plist
теперь есть три типа ключей ориентации устройства.
- Поддерживаемые ориентации интерфейса (iPad)
- Поддерживаемые интерфейсные ориентации (iPhone)
- Поддерживаемые ориентации интерфейса
В-третьих, я думаю, что для не универсальных приложений и отдыха два выше для iPad и iPhone.
Вам следует попробовать.
![enter image description here]()
Ответ 5
Ответ Хариса Хуссейна теперь устарел, начиная с IOS 6, но есть новые методы для ограничения/включения вращения.
Ниже перечислены методы, перечисленные в заголовке UIViewController:
// New Autorotation support.
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0);
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0);
// Returns interface orientation masks.
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0);
Обратите внимание, что shouldAutoRotate не работает, если вы запустите приложение в уже повернутом состоянии!
Ответ 6
Если вы поддерживаете iPad, вам не следует снижать ориентацию ландшафта, так как это предотвратит принятие вашего приложения Apple в App Store.
Чтобы предотвратить поворот, прежде чем приложение покажет ваш первый экран, поместите его в свой AppDelegate.m
Этот метод работает и тестируется в iOS 7.1 выше.
// G - fix for ipad.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}