我知道这个问题已被问到并且已经调查了其他人发布的解决方案,但仍然对这个主题感到很困惑,所以我很抱歉这是否真的是一个“noob”问题。
所以我有一个标签栏视图控制器,我有2个应该自动旋转的视图和一个永远不应该的视图。我的理解是,shouldAutorotateToInterfaceOrientation需要始终返回YES;为了让任何视图控制器自动旋转。因此,如果是这种情况,我将如何只获得一个不旋转但保持订单轮换?
非常感谢!
P.S。我在这里找到的另一篇文章中尝试了这个:How to prevent the view controllers in a tab bar controller from rotating?但没有运气。该帖子的答案发布在
下面“这是一个常见的”错误“ - 但是一个好的解决方法是强制如下触发shouldAutorotateToInterfaceOrientation:选择器:”
- (void)viewDidAppear:(BOOL)animated {
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = [window.subviews objectAtIndex:0];
[view removeFromSuperview];
[window addSubview:view];
}
答案 0 :(得分:1)
您的目标是与UITabBarController
的轮换规则发生冲突。你自己提到了:
shouldAutorotateToInterfaceOrientation需要 始终返回YES以使任何视图控制器自动旋转。
但是你想要的是其中一个视图控制器返回NO
,这违反了该规则。因此,要回答您的问题,您必须实现自己的自定义视图控制器容器(或自定义视图)。
这个限制被添加到UITabBarController
的原因很充分。具有不同旋转规则的选项卡会让用户烦恼,因为每次更改标签时屏幕都会一直旋转。
如果我是你,我将允许所有标签旋转,然后将非旋转视图显示为模态视图。