iOS Отключение Пейзаж LaunchScreen.storyboard
У меня есть LaunchScreen.storybaord
это показывает логотип (текстовый, так что это независимость от ориентации). Приложение всегда запускается в портретной ориентации, но у него есть определенные контроллеры представления, которые допускают альбомный режим (поэтому создание только портретной ориентации приложения не вариант).
Я хочу, чтобы экран запуска всегда появлялся в портретной ориентации. Таким образом, удержание телефона в альбомной ориентации во время запуска приложения должно привести к повороту логотипа (как если бы вы смотрели на контроллер представления, который не поддерживает альбомную ориентацию).
Есть ли способ сказать, что раскадровка должна быть только портретной?
Я пытался использовать черты классов размера, но таким образом я могу обращаться только к левому ИЛИ правому ландшафту. Поскольку для пользователей, впервые использующих анимацию логотипа на экране запуска, также имеется заставка, поворот логотипа зависит от того, в каком направлении был установлен телефон.
3 ответа
Есть несколько подходов для достижения этой цели. Мой любимый, хотя, чтобы указать в 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
Нажмите на навигатор проекта, затем нажмите на цель -> выберите проект> нажмите на общие -> информация о развертывании, и вы увидите ниже вид
Отметьте здесь ориентацию устройства, которую вы проверили при создании проекта, и отметьте нужную ориентацию. Это будет работать.
ИЛИ ЖЕ
Вы можете использовать приведенный ниже код в 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")
}
}