【问题标题】:iOS - support Rotations for specific ViewControllersiOS - 支持特定视图控制器的旋转
【发布时间】: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

标签: ios uiview uiviewcontroller uinavigationcontroller orientation


【解决方案1】:

鉴于 1.您对我的评论的回复, 2.您尝试过以下建议的解决方案:

iOS 6: How do I restrict some views to portrait and allow others to rotate?

据我所知,您可以在所有控制器中访问相同/公共属性 LandscapeOK。

当您从控制器 3 导航回控制器 2 时,我建议您在supportedInterfaceOrientations 中调试和检查 LandscapeOK 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多