2016-01-24 70 views
0

我的應用程序只需要縱向和縱向上下移動。在目標的部署信息中,我只檢查了這兩個。在Info.plist中,所有四個都可用。當我從Info-plist刪除Landscape時,Xcode不會讓我構建,並說我需要支持所有四個。現在通過TestFligh運行應用程序後,它仍然會返回Landscape,儘管未在Deployment Info中選中。我怎樣才能擺脫這一點?在iPad上修復方向

+1

檢查info.plist方向列表的單數。發生在我身上 - 出於某種原因,我有兩個,但我從來沒有手動創建過一個。 – EBDOKUM

+0

可能重複的[無法強制應用程序只能在iOS9肖像](http://stackoverflow.com/questions/34566240/cannot-force-app-to-portrait-only-in-ios9) –

回答

1

您可以在設置中「允許」所有4個選項,但是可以自己控制方向。

我想創建一個自定義UINavigation控制器,這裏面(SWIFT):

import UIKit 

class MyCustomNavigationController: UINavigationController { 
    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return (visibleViewController?.supportedInterfaceOrientations())! 
    } 

    override func shouldAutorotate() -> Bool { 
     return (visibleViewController?.shouldAutorotate())! 
    } 
} 

然後,在每個要強行進入特定方向的ViewControllers的,你這包括:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.Landscape // Or portrait 
} 

override func shouldAutorotate() -> Bool { 
    return true 
} 

這樣你可以允許所有的方向,但仍然保持對視圖本身的控制。如果您希望所有視圖都相同(例如橫向),則可以爲所有視圖控制器創建一個自定義基類,並使用第二組代碼,而不必將其包含在每個單獨的VC中。

+1

@ Kidlcarus271:完美的作品! – mojomo