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

我一直在这个问题上的解决scheme,以显示一个透明背景的观点。 我遇到的问题是一旦模态视图控制器已被显示,底层视图不会被旋转了。

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

请有人build议如何处理这个旋转,以便底层视图( A )也旋转?

ModalViewController用于中断当前的工作stream程并显示一组新的视图。 所以当你模态地呈现,在这种情况下,你正在呈现B,当前活动的Viewcontroller是B而不是A.

ViewController是模型 – 视图 – 控制器(MVC)devise模式中的传统控制器对象。 他们还负责用户界面,手势识别,事件pipe理(例如button)和现有视图的alignment。

当呈现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保持肖像模式

当我这样做添加第二个viewcontroller的视图作为子视图,A改为风景

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

这是因为在第二个试验中,活动的视图控制器是A而不是B,因为B的视图是添加到A的子视图。通过苹果的文档

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