0

我希望我的 UIViewController 可以自动旋转,但只是它,而不是其他任何 uiviewcontroller。这个 UIViewController 呈现在 UINavigationController 中,它不能自动旋转。此代码适用于 iOS 5 和 4,但不适用于 iOS6。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (YES);
}

- (BOOL)shouldAutorotate
{
    return (YES);
}

- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskAll);
}

谢谢帮助:)

4

2 回答 2

2

你需要继承你的 UINavigationController,在这个子类中实现你上面的旋转方法。只有当您的可旋转视图控制器可见时,您才能有条件地返回 YES/UIInterfaceOrientationMaskAll,如下所示:

shouldAutorotateToInterfaceOrientation:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]])
 return (YES);
else
 return (toInterfaceOrientation == UIInterfaceOrientationPortrait);

支持的接口方向:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]])
 return (UIInterfaceOrientationMaskAll);
else
 return (UIInterfaceOrientationPortrait);

但同样你必须在导航控制器中执行此操作,而不是它的子视图控制器。

于 2012-10-19T17:35:09.377 回答
0

iOS 6 只询问“最根”视图控制器关于旋转的问题。那必须是您的 UINavigationController (实际上是此类的子类,因此您可以在某个地方放置旋转委托方法),因为 UINavigationController 在您的其他控制器下。还要确保它被设置为窗口的根视图控制器。

于 2012-10-19T19:00:23.507 回答