我对 ios 中自动旋转的实现感到困惑。
我有一个 UIViewController,我告诉它在 shouldAutoRotateToInterfaceOrientation 内部自动旋转。但是,它不起作用。所以我读了一些关于我需要如何查看导航堆栈和/或是否使用了 UITabBarController 的内容,因为众所周知这会导致各种混乱(举手)。
事实上,我有一个 UITabBar 和一个 UINavigationController。我要旋转的 UIView 被推入堆栈三或四个“级别”深。
为什么自动旋转不完全由当前 UIViewController 中的 shouldAutoRotateToInterfaceOrientation 返回的内容决定?
来自位于以下位置的苹果技术文档: https ://developer.apple.com/library/ios/#qa/qa2010/qa1688.html关于为什么 UIViewController 在您期望它时可能不会旋转:
您的 UITabBarController 或 UINavigationController 中的所有子视图控制器不同意共同的方向集。
为确保您的所有子视图控制器正确旋转,您必须为代表每个选项卡或导航级别的每个视图控制器实现 shouldAutorotateToInterfaceOrientation。每个人都必须同意相同的方向才能发生旋转。也就是说,对于相同的方向位置,它们都应该返回 YES。
有人可以总结一下我们在使用 UITabBars 和 UINavigationControllers 时需要注意的事实吗?人们通常在哪里搞砸,或者什么是混乱点?
如果您有一个 UITabBar、UITabBarController 或 UINavigationController,它的所有子视图都需要具有相同的自动旋转行为。但是你肯定可以让一些子视图旋转而其他子视图不旋转,对吧?
我怀疑失败的常见原因与对响应链的理解不够好有关,因为它适用于自转。如果是这样,有人可以帮我解决这个问题吗?然后我也许能够弄清楚“选择性自转”。
除此之外,其他帖子表明您必须继承 UITabBarController 并覆盖 shouldAutorotateToInterfaceOrientation。