只允许一个 UIViewController 有多个方向

Posted

技术标签:

【中文标题】只允许一个 UIViewController 有多个方向【英文标题】:Allow multiple orientations for only one UIViewController 【发布时间】:2015-05-13 08:37:36 【问题描述】:

我希望我的应用程序的总体方向是纵向的,但对于一个特定的UIViewController (VC2B),我希望用户能够倾斜设备以实现横向方向。 (VC2B有导航栏)

我尝试了不同类型的代码,但没有运气。理想情况下,我只想在UIViewController (VC2B) 中启用轮换。但这似乎是不可能的,相反,您似乎必须启用“常规”部分中的所有方向,然后以编程方式将它们关闭 - 这真的是真的吗?

不管怎样,我已经尝试了各种方法

override func shouldAutorotate() -> Bool 
    return true


override func supportedInterfaceOrientations() -> Int 
    return Int(UIInterfaceOrientation.LandscapeLeft.rawValue) | Int(UIInterfaceOrientation.LandscapeRight.rawValue) | Int(UIInterfaceOrientation.Portrait.rawValue)

下面的答案建议将shouldAutorotate 覆盖为false,但如果页面以横向模式加载,这不起作用,那么它只会卡在横向上。

Allow all orientations for only one view controller

问题:我怎样才能在不向所有我的UIViewControllers 中添加代码的情况下以一种整洁的方式只允许一个UIViewController 的多个方向?

【问题讨论】:

你如何显示特定的视图控制器?作为模态?还是推入 NavigationController? NC ------> VC1B ---push---> VC2B How to lock device orientation in ios 7 and iOS 8的可能重复 您可以创建一个 BaseViewController,为其添加 Portrait 旋转,将其分配给您的所有 ViewController,并为该 ViewController 单独实现所有旋转(VC2B 【参考方案1】:

当我遇到同样的情况时,请执行以下操作:

在常规信息屏幕中启用所需的方向 在每个 ViewController.swift 中,override 使用 truefalse (应该旋转的那个为 true,其他为 false)

【讨论】:

只有在加载所有 VC 的情况下才有效推送,如果加载模式则失败。然后,视图将以手机当时的任何方向加载。

以上是关于只允许一个 UIViewController 有多个方向的主要内容,如果未能解决你的问题,请参考以下文章

只使用redis实现活动流有多安全?

通过 UIViewController 传递触摸

UIViewController 容器:允许孩子有不同的方向

如何让 UITextField 只允许使用 Swift 3 的整数?

允许在下面呈现的 UIViewController 上的 UIViewController 上进行交互

强制 uiviewcontroller 旋转