iOS - 使用导航控制器旋转

Posted

技术标签:

【中文标题】iOS - 使用导航控制器旋转【英文标题】:iOS - Rotation with a Nav Controller 【发布时间】:2011-02-18 13:52:35 【问题描述】:

这是一个小而烦人的问题。我正在使用导航控制器,它不会旋转。我之前在没有导航控制器的情况下使用代码,它旋转得很漂亮。它现在甚至没有调用“-(BOOL)shouldAutororateToInterfaceOrientation...”,所以我有点茫然。

提前致谢。

编辑:是的,我设置了“-(BOOL)canBecomeFirstResponder”。

Edit2:我现在调用“-(BOOL)shouldAutororateToInterfaceOrientation...”,当应用程序第一次运行时,此时屏幕旋转,但当它显示导航控制器时,将其设置回纵向模式...

【问题讨论】:

你所有的视图控制器都有这些方法吗? 【参考方案1】:

UIWindow 将这些事件传播到除根控制器之外的视图控制器存在问题。如果您将此控制器直接添加到 UIWindow 并且它不是您添加的第一个,则将其添加到根视图中。

否则,您可能需要考虑实现自己的旋转变换。我有一个 UIViewController 子类,它为您完成了繁重的工作on github here。

【讨论】:

【参考方案2】:

您的控制器需要 return YES 在:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
  // Overriden to allow any orientation.
  return YES;

另外,如果你有一个 UITabBarController,每个控制器都需要那个方法返回 YES。

【讨论】:

我的返回正确,但从未调用过该方法。

以上是关于iOS - 使用导航控制器旋转的主要内容,如果未能解决你的问题,请参考以下文章

iOS Autolayout - 在半透明导航栏下方正确定位视图

如何在 iOS 5 中将工具栏与每次旋转对齐?

如何旋转两个 UIView?

在 iOS8 中调整旋转工具栏的大小

IOS开发UI篇—导航控制器属性和基本使用

iOS导航控制器的注意事项