【发布时间】:2013-12-11 20:10:52
【问题描述】:
我使用SWRevealViewController (https://github.com/John-Lluch/SWRevealViewController) 来处理两个控制器之间的切换,一个“前”和一个“后”。
前控制器是UINavigationController,后控制器只是一个普通的UIViewController,显示菜单项列表。前面的UINavigationController 推送了一个名为FrontViewController 的视图控制器的实例。后面的UIViewController 是RearViewController 的一个实例。 SWRevealViewController 的实例在配置前后控制器后被设置为根视图控制器,reveal 控制器的delegate 属性设置为应用程序委托本身。
在 FrontViewController 和 RearViewController 中,我将覆盖 shouldAutorotate 并返回 NO 以及覆盖 supportedInterfaceOrientations 并返回 UIInterfaceOrientationMaskPortrait。
但是,当我旋转设备时,应用会自动旋转并进入横向显示这两个视图。
supportedInterfaceOrientations 似乎只在FrontViewController 中调用,但该值不被接受,并且设备旋转为横向。
我也不能简单地将整个应用设置为纵向,因为我确实想要支持横向(电影播放器等)的其他详细视图。
如何让SWRevealViewController 工作,以便我可以在控制器的某些子视图中将应用程序限制为纵向?
我还注意到演示文稿的更改也没有得到尊重。在RearViewController 中,我将覆盖prefersStatusBarHidden 以返回YES,但从未调用此方法。同样在FrontViewController 中,我将覆盖preferredStatusBarStyle 以返回UIStatusBarStyleLightContent,但也从未调用此方法。
我的 plist 中有 UIViewControllerBasedStatusBarAppearance 设置为 YES。
更新:
我已尝试按照 cmets 中的建议使用 PKRevealController,但行为完全相同。完全忽略支持的方向和状态栏样式。 supportedInterfaceOrientations on FrontViewController 是唯一调用的覆盖,但不支持 UIInterfaceOrientationMaskPortrait 的返回值。
更新 2:
我认为这只是这些控件的一个限制,他们非常希望支持方向在整个应用程序中是相同的。但是我确实尝试了MFSideMenu (https://github.com/mikefrederick/MFSideMenu),它似乎可以完全按照您的预期处理不同子视图中支持的方向。不幸的是,我仍然没有状态栏的可见性和样式。
【问题讨论】:
-
你看过PKRevealController吗? github.com/pkluz/PKRevealController
-
我检查了它,它实际上看起来像一个更好的库,但是同样的问题仍然存在。这就像显示控制器覆盖了应用程序其余视图中的方向设置。我可能只是想让所有东西都支持 Landscape,但很高兴知道为什么会发生这种情况。
标签: ios iphone objective-c ios7