为了显示具有透明背景的视图,我一直在关注这个问题的解决方案。我遇到的问题是,一旦显示模态视图控制器,底层视图就不再旋转了。
例如,如果A
是我的视图控制器,那么B
就是我的模态视图。问题如下。我目前有我的设备纵向并已A
显示。然后我以模态方式呈现B
。然后我旋转我的设备,B 随之旋转,但A
保持原样。
请有人建议如何处理这种旋转,以便底层视图(A
)也被旋转?
为了显示具有透明背景的视图,我一直在关注这个问题的解决方案。我遇到的问题是,一旦显示模态视图控制器,底层视图就不再旋转了。
例如,如果A
是我的视图控制器,那么B
就是我的模态视图。问题如下。我目前有我的设备纵向并已A
显示。然后我以模态方式呈现B
。然后我旋转我的设备,B 随之旋转,但A
保持原样。
请有人建议如何处理这种旋转,以便底层视图(A
)也被旋转?
ModalViewController 用于中断当前工作流并显示一组新视图。因此,当您以模态方式呈现时,在这种情况下,您正在呈现 B,当前活动的 Viewcontroller 是 B 而不是 A。
ViewController 是 Model-View-Controller (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 的子视图。通过 Apples 的文档