iOS禁用横向LaunchScreen.storyboard
Posted
技术标签:
【中文标题】iOS禁用横向LaunchScreen.storyboard【英文标题】:iOS Disabling Landscape LaunchScreen.storyboard 【发布时间】:2018-06-08 08:03:29 【问题描述】:我有一个LaunchScreen.storybaord
,它显示了一个徽标(文本,因此它与方向无关)。该应用程序始终以纵向方式启动,但它具有某些允许横向模式的视图控制器(因此仅使应用程序纵向不是一种选择)。
我想要的是启动屏幕总是纵向显示。因此,在应用启动期间将手机保持为横向应该会导致看到徽标旋转(就像查看不支持横向的视图控制器一样)
有没有办法让故事板仅是纵向的?
我尝试使用尺寸等级特征,但这样我只能处理左或右景观。由于还为初次使用的用户提供了一个介绍屏幕,可从启动屏幕为徽标设置动画,因此徽标旋转取决于手机横向放置的方向。
【问题讨论】:
参考这个堆栈帖子:***.com/questions/28938660/… 【参考方案1】:有几种方法可以实现这一点。我更喜欢的是在 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
【讨论】:
它不适合我。【参考方案2】:单击项目导航器,然后单击目标-> 选择项目> 单击常规-> 部署信息,然后您将看到下面的视图
在此处检查您在项目创建期间检查的设备方向并标记您想要的方向。它会起作用的。
或
您可以在 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")
【讨论】:
viedDidLoad
不会在 LaunchScreen VC 中调用,并且也无法提供自定义类。当操作系统显示故事板时,应用程序未运行
将应用程序置于纵向模式不起作用,因为那时您不能拥有任何支持横向的视图控制器。以上是关于iOS禁用横向LaunchScreen.storyboard的主要内容,如果未能解决你的问题,请参考以下文章