0

我想支持除主视图控制器之外的所有视图的所有方向。我似乎找不到办法做到这一点。

我可以支持所有视图的方向,也可以在整个应用程序中不支持视图。您如何支持整个应用程序中某些视图的方向?

4

2 回答 2

1

子类化最顶层的控制器。例如,您有一个导航控制器作为最顶层的控制器,那么您只需要子类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 为您不需要进行旋转的那些控制器。

干杯!!!!!

于 2012-11-19T10:21:53.093 回答
1

我还没有使用需要按照您描述的方式操作的应用程序,但是当您需要控制方向支持时,Apple 文档建议您这样做:

动态控制是否发生旋转

有时您可能希望动态禁用自动旋转。例如,当您想在短时间内完全抑制旋转时,您可能会这样做。您必须暂时禁用想要手动控制状态栏位置的方向更改(例如当您调用 setStatusBarOrientation:animated: 方法时)。

> 如果您想暂时禁用自动旋转,请避免操作方向蒙版来执行此操作。相反,覆盖最顶层视图控制器上的 shouldAutorotate 方法。在执行任何自转之前调用此方法。如果它返回 NO,则旋转被抑制。

来源:http: //developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html#//apple_ref/doc/uid/TP40007457-CH7-SW1

于 2012-11-19T02:14:23.343 回答