Подтвердить что ты не робот

Можете ли вы отключить ротацию во всем мире в приложении iOS?

У меня есть приложение, состоящее из множества контроллеров представлений... в резюме проекта я установил ориентацию Portrait как единственную поддерживаемую ориентацию устройства.

Однако приложение по-прежнему перепутано, когда оно повернуто сбоку.

Мой вопрос в том, есть ли способ глобально отключить авторотацию через делегат приложения или что-то еще?

Или мне нужно войти во все контроллеры моего представления и добавить метод "shouldAutorotateToInterfaceOrientation"?

Просто не хочу пропустить добавление его к одному или к чему-то...

Спасибо!

4b9b3361

Ответ 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;
}