多个视图的 Swift UIInterfaceOrientation
Posted
技术标签:
【中文标题】多个视图的 Swift UIInterfaceOrientation【英文标题】:Swift UIInterfaceOrientation for Multiple views 【发布时间】:2014-09-14 20:18:45 【问题描述】:我有一个带有多个视图的导航控制器。大多数视图都是纵向的,因此我通过在导航视图控制器中放置以下代码将其锁定为纵向视图
override func shouldAutorotate() -> Bool
return false
override func supportedInterfaceOrientations() -> Int
return UIInterfaceOrientation.Portrait.toRaw()
这很好用,并且可以将我的所有视图都锁定为纵向。但是,这是 1 个仅需要在横向中的视图。如果我使用上面的代码,它会将我的横向视图锁定为纵向模式,从而切断大部分视图。
谁能帮我解决在横向视图控制器中使用什么来仅将这个特定视图锁定在横向中。
我在用这个,但它不起作用。
override func supportedInterfaceOrientations() -> Int
return Int(UIInterfaceOrientationMask.Landscape.toRaw())
override func shouldAutorotate() -> Bool
// This method is the same for all the three custom ViewController
return true
【问题讨论】:
【参考方案1】:对于小型应用程序,我通常使用的解决方案是让导航控制器询问视图本身的旋转偏好:
override func supportedInterfaceOrientations() -> Int
return visibleViewController.supportedInterfaceOrientations()
override func shouldAutorotate() -> Bool
return visibleViewController.shouldAutorotate()
然后,在您的每个视图控制器中,您可以覆盖 shouldAutorotate 和 supportedInterfaceOrientations 来为每个控制器提供您想要的行为。
还有一个技巧,为了确保您的视图可以旋转回所需的旋转,您可以使用它来有条件地允许旋转回纵向:
override func shouldAutorotate() -> Bool
return !UIInterfaceOrientationIsPortrait(self.interfaceOrientation)
【讨论】:
以上是关于多个视图的 Swift UIInterfaceOrientation的主要内容,如果未能解决你的问题,请参考以下文章
多个视图的 Swift UIInterfaceOrientation