UISplitViewController主面板显示的视图在从纵向旋转到横向时不旋转(iPad)

时间:2016-07-28 10:44:52

标签: ios objective-c ipad uisplitviewcontroller autorotate

我将在UISplitViewController的主面板中呈现模态视图和操作表。 iOS 9.3

1)如果我在iPad处于纵向模式时显示视图并将iPad旋转到横向,则屏幕不会旋转。enter image description here
2)但是如果我在iPad处于横向模式时呈现视图并将iPad旋转为纵向,则屏幕正在旋转。

如何实现轮换?

1 个答案:

答案 0 :(得分:1)

解决此问题有两种解决方案:

  1. 从主面板呈现模态视图并不理想,但您应该从UISplitViewController本身进行。

    splitViewController.preferredDisplayMode =UISplitViewControllerDisplayModeAllVisible; // For displaying the master panel always as is in the screen shot in the Question
    modalViewController.modalPresentationStyle = UIModalPresentationFormSheet; // For displaying the modalViewController in form sheet style
    [splitViewController presentViewController:modalViewController animated:TRUE completion:nil]; // Note: modalViewController is presented from UISplitViewController and not from master panel of split view
    
  2. 在纵向模式下,溢出视图的主面板显示在弹出框中,因此设备旋转更改必须通过popovercontroller。我猜这个点断链。所以,要解决问题调用

    [spliVC setPreferredDisplayMode:UISplitViewControllerDisplayModePrimaryHidden];  
    
  3. 在调用模态表示segue之前

    (来自prepareForSegue)。我不确定代表们是否采用这种方法。

    修改 我还观察到,如果拆分视图处于UISplitViewControllerDisplayModeAllVisible模式,那么甚至从主面板呈现模态vc(假设通过故事板中的简单模态segue)也不会给出旋转问题。我已经在iOS 9.3模拟器中证实了这一点。