Попытка предотвратить изменение ориентации на iPhone 4 - PullRequest
0 голосов
/ 04 сентября 2018

У меня проблема с поворотом (изменением ориентации) в приложении для iOS. Приложение имеет несколько контроллеров представления для навигации.

Я хочу, чтобы это можно было вращать, кроме iPhone 4 (3,5-дюймовые устройства). На 3,5-дюймовом устройстве он всегда должен оставаться в портретном режиме.

Я могу предотвратить прямое вращение, то есть когда внутри контроллера вида, если пользователь держит устройство в портретном режиме, то в горизонтальном режиме ничего не происходит. Это именно то, что я хочу.

Проблемы возникают при смене контроллера вида при удержании в ландшафтном режиме. В этом случае новый контроллер представления появляется в ландшафтном режиме, и я не хочу этого.

Я пытался использовать

- (BOOL)shouldAutorotate;

возвращает NO, если устройство имеет 3,5 дюйма, но это не работает.

Как я могу предотвратить это поведение?

Мне может понадобиться добавить одну деталь: 3,5-дюймовое устройство, которое я использую для тестирования, работает под управлением iOS версии 9.3.5.

Я использую Xcode 9.4.1.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вам необходимо добавить этот код в AppDelegate.m . iPhone 4 / iPhone 4s имеет высоту экрана 480 точек.

Objective-C

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{
    if(self.window.bounds.size.height > 500) {
        return (UIInterfaceOrientationMaskLandscape | UIInterfaceOrientationMaskPortrait);
    } else {
        return UIInterfaceOrientationMaskPortrait;
    }
}

Вам также может понадобиться включить Require Full Screen в Target's Deployment Info.

0 голосов
/ 04 сентября 2018

Вы можете использовать метод supportInterfaceOrientations .

Например:

Цель c

-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    //return your preferred orientation 
    return UIInterfaceOrientationMaskPortrait;
}
...