【问题标题】:iOS: Apply view rotation to view controller under modal viewiOS:在模态视图下将视图旋转应用于视图控制器
【发布时间】:2013-01-03 08:55:22
【问题描述】:

我一直在关注this question 上的解决方案,以便显示具有透明背景的视图。我遇到的问题是,一旦显示模态视图控制器,底层视图就不再旋转了。

例如,如果A 是我的视图控制器,那么B 是我的模态视图。问题如下。我目前有我的设备纵向并显示A。然后我以模态方式呈现B。然后我旋转我的设备,B 随之旋转,但 A 保持原样。

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

【问题讨论】:

标签: ios objective-c ipad uiviewcontroller modalviewcontroller


【解决方案1】:

ModalViewController 用于中断当前工作流程并显示一组新视图。因此,当您以模态方式呈现时,在这种情况下,您正在呈现 B,当前活动的 Viewcontroller 是 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 的子视图。在

上浏览 Apples 的文档

【讨论】:

  • 在模态视图控制器下我的视图在 ios7 中没有旋转时遇到同样的问题..怎么办?在ios8中使用UIModalPresentationOverCurrentContext在modal下旋转视图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多