我正在继承UINavigationController
并重写supportedInterfaceOrientations
方法。在该方法中,我委托visibleViewController.supportedInterfaceOrientations
。但是,当我以模态方式呈现UIImagePickerController
时,visibleViewController
为零。
在iOS 10中发生了某些变化visibleViewController
返回nil。
如果我更改代码以使用presentedViewController
,则会正确返回UIImagePickerController
。
这是正确的更改吗? ?为什么这会改变?
答案 0 :(得分:1)
听起来你可以使用setOverrideTraitCollection(_:forChildViewController:)
- -
(我想你可以实现与UIImagePickerController
类似的东西):
func setOverrideTraitCollection(_ collection: UITraitCollection?,
forChildViewController childViewController: UIViewController)
通常,traits从父视图控制器未经修改地传递 到它的子视图控制器。实现自定义容器时 查看控制器,您可以使用此方法来更改任何特征 嵌入式子视图控制器更适合您的 布局。进行此类更改会改变其他视图控制器行为 与那个孩子有关。例如,模态演示表现出来 不同的是水平紧凑与水平规则 环境。您也可以进行此类更改以强制执行相同的设置 无论实际特征如何,子视图控制器上的特征 环境。
WWWDDC 2016的视频演示:Making Apps Adaptive, Part 1和2
Apple已recommended使用较新的API UITraitCollection
和UITraitEnvironment
而不是试图调整supportedInterfaceOrientations
前进......