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