iOS - 支持特定视图控制器的旋转
Posted
技术标签:
【中文标题】iOS - 支持特定视图控制器的旋转【英文标题】:iOS - support Rotations for specific ViewControllers 【发布时间】:2013-09-20 17:01:17 【问题描述】:我有 3 个视图的层次结构
我为我的 NavigationViewController 创建了一个子类,并设置了一个属性Landscape
,它确定每个 viewController 是否可以支持不同的方向。
此属性设置在每个视图控制器的ViewWillAppear
中:这非常有效。控制器 1 和 2 仅支持纵向,控制器 3 支持纵向和横向。
当我要返回 popping
控制器 3 以返回控制器 2 时出现问题
如果我在横向的控制器 3 中,然后单击后退按钮,我的控制器 2 以横向呈现给我:(控制器 2 不支持横向)
然后我必须旋转设备以使方向自行修复。 . . .
导航控制器中的代码 - (BOOL) 应该自动旋转 返回是;
- (NSUInteger)supportedInterfaceOrientations
if (LandscapeOK)
// for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
return UIInterfaceOrientationMaskAll;
else
return UIInterfaceOrientationMaskPortrait;
每个ViewControllers的代码ViewWillAppear
方法
[(NavigationViewController *)[self navigationController] setLandscape:YES];
我的代码设置几乎与这个问题完全相同:同样的问题。大约一年前发布了问题,但还没有合适的解决方案 - 在查看列出的答案时
ios 6: How do I restrict some views to portrait and allow others to rotate?
【问题讨论】:
从 'Hierarchy' 中,你的意思是,你有一个父级 'NavigationViewController',上面有 'Landscape' 属性,而所有其他控制器(1、2 和 3)都派生自它? 是的 - 每个 VC 中都有一个按钮通向下一个 1 -> 2 -> 3 【参考方案1】:鉴于 1.您对我的评论的回复, 2.您尝试过以下建议的解决方案:
iOS 6: How do I restrict some views to portrait and allow others to rotate?
据我所知,您可以在所有控制器中访问相同/公共属性 LandscapeOK。
当您从控制器 3 导航回控制器 2 时,我建议您在supportedInterfaceOrientations 中调试和检查 LandscapeOK 的值。
【讨论】:
以上是关于iOS - 支持特定视图控制器的旋转的主要内容,如果未能解决你的问题,请参考以下文章