iOS:在模态视图下应用视图旋转于视图控制器

5
我一直在遵循这个问题上的解决方案,以便显示具有透明背景的视图。我遇到的问题是一旦模态视图控制器被显示,底层视图就不再旋转了。
例如,如果A是我的视图控制器,那么B是我的模态视图。问题如下。我目前将设备放置在竖屏模式并且显示了A。然后,我以模态方式呈现B。然后,我旋转设备,B也随之旋转,但是A仍然保持原样。
请问如何处理旋转,以便底层视图(A)也能旋转?

可能是重复的问题:iOS模态视图控制器旋转时旋转视图控制器 - michael23
1个回答

6

ModalViewController用于打断当前工作流程并显示一组新的视图。因此,在这种情况下,您正在呈现B,当前活动的Viewcontroller是B而不是A。

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

当您呈现B时,当前的viewcontroller从A更改为B,因此当您尝试旋转(如果提供了方向支持),B的视图会受到影响,因为它是活动的viewcontroller并且响应旋转。通常我们没有注意到这些,因为视图是不透明的。在您的情况下,视图是透明的,我们注意到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作为子视图。请查看苹果公司的文档:

我的问题和你一样,我在 iOS7 下的模态视图控制器中的视图不会旋转...怎么办?在 iOS8 中使用 UIModalPresentationOverCurrentContext 可以旋转模态视图下的视图。 - Apple_Magic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接