2016-10-12 60 views
1

我將子類UINavigationController並覆蓋了supportedInterfaceOrientations方法。在這種方法中,我委託給visibleViewController.supportedInterfaceOrientations
然而,當我以模態方式呈現UIImagePickerController時,則visibleViewController爲零。
iOS 10中發生了一些變化,導致visibleViewController返回零。
如果我更改代碼以使用presentedViewController它正確返回UIImagePickerController

這是正確的改變嗎?爲什麼這個改變?如何在導航控制器iOS 10中正確覆蓋supportedInterfaceOrientations?

+0

技術上的「正確「的方式將使用」UITraitCollection「和」UITraitEnvironment「API ... –

+0

@ l'l l如果你可以發佈一個例子,我將不勝感激! – Andrew

回答

1

這聽起來像你可以使用setOverrideTraitCollection(_:forChildViewController:) - - (我可以想象你可以實現與UIImagePickerController類似的東西):

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

通常情況下,性狀傳遞未修改從父視圖控制器 到它的子視圖控制器。在實現自定義容器視圖控制器時,可以使用此方法將嵌入式子視圖控制器的任何 的特性更改爲更適合於您的 佈局的特性。做出這樣的改變會改變與該孩子相關的其他視圖控制器行爲 。例如,模態演示文稿在水平緊湊型與水平常規型 環境中的行爲不同。您也可以進行這樣的更改,以強制子視圖控制器上特徵的相同集合 ,而不管實際特徵 環境。

↪︎視頻演示從WWDC 2016年Making Apps Adaptive, Part 12

蘋果recommended使用更新的API UITraitCollectionUITraitEnvironment在努力適應supportedInterfaceOrientations前進......

+0

啊,有趣。感謝您的資源。我會檢查他們。 – Andrew

相關問題