我想支持除主视图控制器之外的所有视图的所有方向。我似乎找不到办法做到这一点。
我可以支持所有视图的方向,也可以在整个应用程序中不支持视图。您如何支持整个应用程序中某些视图的方向?
子类化最顶层的控制器。例如,您有一个导航控制器作为最顶层的控制器,那么您只需要子类UINavigationController
化并在子类的 .m 文件中编写以下代码行
- (BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
现在覆盖- (BOOL)shouldAutorotate
项目中每个控制器的方法。ReturnTRUE
为您需要进行旋转FALSE
的那些控制器和 Return 为您不需要进行旋转的那些控制器。
干杯!!!!!
我还没有使用需要按照您描述的方式操作的应用程序,但是当您需要控制方向支持时,Apple 文档建议您这样做:
动态控制是否发生旋转
有时您可能希望动态禁用自动旋转。例如,当您想在短时间内完全抑制旋转时,您可能会这样做。您必须暂时禁用想要手动控制状态栏位置的方向更改(例如当您调用 setStatusBarOrientation:animated: 方法时)。
> 如果您想暂时禁用自动旋转,请避免操作方向蒙版来执行此操作。相反,覆盖最顶层视图控制器上的 shouldAutorotate 方法。在执行任何自转之前调用此方法。如果它返回 NO,则旋转被抑制。