iOS Отключение ландшафта LaunchScreen.storyboard - PullRequest
0 голосов
/ 08 июня 2018

У меня есть LaunchScreen.storybaord, который показывает логотип (текстовый, так что он не зависит от ориентации).Приложение запускается всегда в портретной ориентации, но у него есть определенные контроллеры представления, которые допускают альбомный режим (поэтому создание только портретной ориентации приложения не вариант).

Я хочу, чтобы экран запуска всегда появлялся в портретной ориентации.Таким образом, удержание телефона в горизонтальной ориентации во время запуска приложения должно привести к повороту логотипа (как если бы вы смотрели на контроллер представления, который не поддерживает альбомную ориентацию)

Есть ли способ указать раскадровке только портретную ориентацию?

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

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Нажмите на навигатор проекта, затем нажмите на цель -> выберите проект> нажмите на общие -> информация о развертывании, и вы увидите ниже представление

enter image description here

отметьте здесь ориентацию устройства, которую вы проверили при создании проекта, и отметьте нужную ориентацию.Это будет работать.

ИЛИ

Вы можете использовать следующий код в ViewDidLoad:

NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name:  Notification.Name("UIDeviceOrientationDidChangeNotification"), object: nil)

Затем создайте одну функцию, как показано ниже

@objc func orientationChanged() {

    if(UIDeviceOrientationIsLandscape(UIDevice.current.orientation)){

        print("landscape")
    }

    if(UIDeviceOrientationIsPortrait(UIDevice.current.orientation)){

        print("Portrait")
    }

}
0 голосов
/ 08 июня 2018

Есть несколько подходов для достижения этой цели.Хотя я предпочитаю указывать в Info.plist

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>

и переопределять это после завершения запуска приложения внутри AppDelegate

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return [.allButUpsideDown]
}

Источник: https://developer.apple.com/library/archive/technotes/tn2244/_index.html#//apple_ref/doc/uid/DTS40009012-CH1-ALLOWING_YOUR_APP_TO_ROTATE_INTO_PORTRAIT_ORIENTATION_AFTER_LAUNCH

...