在模态视图下对视图控制器应用视图旋转



我一直在遵循这个问题的解决方案,以显示具有透明背景的视图。我遇到的问题是一旦模态视图控制器被显示,底层视图不再旋转。

例如,如果A是我的视图控制器,那么B是我的模态视图。问题如下。我目前有我的设备在肖像和A显示。然后,我模态地呈现B。然后我旋转我的设备和B旋转,但A保持不变。

请有人建议如何处理这种旋转,使底层视图(A)得到旋转了吗?

ModalViewController用于中断当前工作流并显示一组新的视图。当你模态呈现时,在这个例子中你呈现的是B,当前活动视图控制器是B而不是a

ViewController是模型-视图-控制器(MVC)设计模式中的传统控制器对象。它们还负责用户界面、手势识别、事件管理(例如按钮)和视图的对齐。

当你呈现B时,当前视图控制器从A变为B,因此当你尝试旋转时(如果提供了方向支持),B的视图受到影响,因为它的视图控制器处于活动状态,并且它响应旋转。通常我们不会注意到这些,因为视图是不透明的。在你的例子中,视图是透明的,我们注意到A没有响应旋转。

我在iOS6中尝试了上面的例子(从你提到的那个)

ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];

这里A保持竖屏模式

当我添加第二个视图控制器的视图作为子视图时,a变为横向

ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.view addSubview:vc.view];

发生这种情况是因为在第二次试验中活动视图控制器是A而不是B,因为B的视图是添加到A的子视图,查看apple的文档

    关于ViewController
  • 关于窗口和视图
  • 呈现viewcontroller

相关内容

最新更新