我知道这个问题已经被问到了,并且已经研究了其他人发布的解决方案,但仍然对这个主题感到很困惑,所以如果这确实是一个“菜鸟”问题,我深表歉意。
所以我有一个标签栏 View Controller ,并且有 2 个应该自动旋转的 View 和一个不应该自动旋转的 View 。我的理解是,shouldAutorotateToInterfaceOrientation 需要始终返回 YES;为了让任何 View Controller 自动旋转。因此,如果是这种情况,我怎样才能只让一个不轮换但保持订单轮换呢?
非常感谢!
附言我从此处找到的另一篇文章中尝试了此操作: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];
}
最佳答案
您的目标行为与 UITabBarController
的旋转规则冲突。您自己提到过:
shouldAutorotateToInterfaceOrientation needs to always return YES in order for any view controllers to autorotate.
但是您想要的是 View Controller 之一返回NO
,这违反了该规则。因此,要回答您的问题,您必须实现自己的自定义 View Controller 容器(或自定义 View )。
将此限制添加到 UITabBarController
中是有充分理由的。具有不同旋转规则的选项卡会让用户感到厌烦,因为每次更改选项卡时屏幕都会在这些选项卡上不断旋转。
现在,如果我是您,我将允许所有选项卡旋转,然后将非旋转 View 呈现为模态视图。
关于objective-c - 不旋转标签栏 View Controller 中的仅一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157541/