在Xcode中項目的General - deployment info部分中,勾選應用中任何屏幕的所有允許方向。
iOS在屏幕上可見的最底層UIViewController中調用supportedInterfaceOrientations
方法。如果VC覆蓋整個屏幕,則較早的VC(進一步朝向根視圖控制器)沒有調用該方法。
如果您webBrowser
VC覆蓋了整個屏幕,然後把一個方法是:
override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.All.rawValue) }
如果webBrowser
沒有覆蓋整個屏幕,並navigationController
仍呈現一個導航欄,則該方法將不被調用,而navigationController
中的那個將被調用。因此,子類UINavigationController
:
class CustomNC:UINavigationController {
override func supportedInterfaceOrientations() -> Int {
if visibleViewController is KINWebBrowserViewController { return Int(UIInterfaceOrientationMask.All.rawValue) }
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}
,並宣佈你的UINavigationController是一個CustomNC
代替。我沒有測試代碼,它可能有錯別字,但現在這種技術正在爲我工作。
更多解釋:CustomNC
是一個新的,更聰明的UINavigationController
,你只是想發明。您可以將代碼放在項目中的任何swift文件中。它就像現有的UINavigationController
,只是它改變了旋轉時的行爲。所以你希望它繼承UINavigationController的所有行爲,然後重寫旋轉位。該位是否繼承:
class CustomNC:UINavigationController {
和該位不會壓倒一切的:
override func supportedInterfaceOrientations() -> Int {
而且你需要告訴Xcode中,你的根視圖控制器是一個CustomNC
,而不是一個普通的UINavigationController
。如果您使用故事板構建了項目,則可以單擊UINavigationController
進行選擇,然後將其類別從UINavigationController
更改爲,位於Xcode右上角的Identity Inspector
選項卡中。
感謝您的回答。我不確定你的意思。什麼是CustomNC? – 2015-04-01 10:57:54
添加了更多解釋。 – emrys57 2015-04-01 11:05:56
好的謝謝。我得到它的工作,但是當回到tableviewcontroller和KINWebBrowserViewController在橫向tableviewcontroller也在景觀。我只想要肖像畫。這是tableviewcontroller唯一的一次風景。任何其他幫助? – 2015-04-01 11:13:02