iOS禁用横向LaunchScreen.storyboard

时间:2018-06-08 08:03:30

标签: ios iphone interface-builder uistoryboard launch-screen

我有一个显示徽标的LaunchScreen.storybaord(文字,因此它与方向无关)。该应用程序始终以纵向方式启动,但它具有允许横向模式的某些视图控制器(因此仅使应用程序纵向不可用)。

我想要的是发布屏幕始终以纵向显示。因此,在应用程序启动期间将手机保持在横向状态会导致徽标旋转(就像查看不支持横向的视图控制器一样)

有没有办法告诉故事板只是肖像?

我尝试使用大小类特征,但这样我只能解决左或右视图。由于首次使用的用户屏幕还可以通过启动屏幕为徽标设置动画,因此徽标旋转取决于手机在横向放置的方向。

2 个答案:

答案 0 :(得分:5)

有几种方法可以实现这一目标。我首选的是在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

答案 1 :(得分:0)

单击项目导航器,然后单击目标 - &gt;选择项目&gt;点击一般 - &gt;部署信息,然后您将看到以下视图

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")
    }

}