如何正确覆盖导航控制器iOS 10中的supportedInterfaceOrientations?

时间:2016-10-12 15:18:22

标签: ios

我正在继承UINavigationController并重写supportedInterfaceOrientations方法。在该方法中,我委托visibleViewController.supportedInterfaceOrientations。但是,当我以模态方式呈现UIImagePickerController时,visibleViewController为零。
在iOS 10中发生了某些变化visibleViewController返回nil。
如果我更改代码以使用presentedViewController,则会正确返回UIImagePickerController

这是正确的更改吗? ?为什么这会改变?

1 个答案:

答案 0 :(得分:1)

听起来你可以使用setOverrideTraitCollection(_:forChildViewController:) - - (我想你可以实现与UIImagePickerController类似的东西):

func setOverrideTraitCollection(_ collection: UITraitCollection?, 
     forChildViewController childViewController: UIViewController)
  

通常,traits从父视图控制器未经修改地传递   到它的子视图控制器。实现自定义容器时   查看控制器,您可以使用此方法来更改任何特征   嵌入式子视图控制器更适合您的   布局。进行此类更改会改变其他视图控制器行为   与那个孩子有关。例如,模态演示表现出来   不同的是水平紧凑与水平规则   环境。您也可以进行此类更改以强制执行相同的设置   无论实际特征如何,子视图控制器上的特征   环境。

     

WWWDDC 2016的视频演示:Making Apps Adaptive, Part 12

Apple已recommended使用较新的API UITraitCollection UITraitEnvironment而不是试图调整supportedInterfaceOrientations前进......