只允许一个 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
问题:我怎样才能在不向所有我的UIViewController
s 中添加代码的情况下以一种整洁的方式只允许一个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 使用 true 或 false (应该旋转的那个为 true,其他为 false)
【讨论】:
只有在加载所有 VC 的情况下才有效推送,如果加载模式则失败。然后,视图将以手机当时的任何方向加载。以上是关于只允许一个 UIViewController 有多个方向的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController 容器:允许孩子有不同的方向
如何让 UITextField 只允许使用 Swift 3 的整数?