我有一个 UITabBarController,每个选项卡处理一个不同的 UIViewController,它根据需要推送堆栈新控制器。在其中两个选项卡中,当到达特定控制器时,我需要旋转 iPhone 并在横向模式下可视化视图的能力。经过一番挣扎后,我发现必须将 UITabBarController 子类化以覆盖 shouldAutorotateToInterfaceOrientation。但是,如果我在实现中简单地返回 YES,则会出现以下不良副作用:
旋转 iPhone 时,每个选项卡中的每个控制器都会自动进入横向模式。
即使在每个控制器中覆盖 shouldAutorotateToInterfaceOrientation 以返回 NO 也不起作用:当 iPhone 旋转时,控制器处于横向模式。
我在子类 UITabBarController 中实现了 shouldAutorotateToInterfaceOrientation 如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
return YES;
return NO;
}
这样只有我感兴趣的两个选项卡才能真正获得对横向模式的支持。有没有办法支持特定选项卡堆栈上特定控制器的横向模式?
我试过了,但没有成功,比如
(BOOL)应该自动旋转到接口方向:(UI接口方向)接口方向{
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
{
if ([[self selectedViewController] isKindOfClass: [landscapeModeViewController class]])
return YES;
}
return NO;
}
另外,我尝试使用委托方法 didSelectViewController,但没有成功。任何帮助是极大的赞赏。谢谢你。