2017-04-24 495 views
1

我正在開發一個應用程序,該應用程序在啓動時處於縱向模式。之後,我爲我的項目添加了一些SDK。在集成SDK的過程中,需要在「常規」窗格中選中「縱向」和「橫向」權限。所以我將其設置爲在SDK集成手冊中給出的。如何停止設備方向更改

enter image description here

後,當我跑我的設備項目,將其旋轉到右邊的應用設備的方向正在發生變化。我怎樣才能設置方向是固定的,而不會干擾SDK。

+0

可以清除問題正是你想要什麼如果你設置的風景正確,然後定位 - 當然它會改變。 –

+0

我想我的應用程序將只支持肖像模式。我知道,如果我給風景權,它會改變方向。如果我刪除風景權,我的sdk無法正常工作,並且像'支持的方向與應用程序沒有共同的方向,並且應該手動標記返回YES'一樣出現一些錯誤。 – Ramakrishna

+0

看看這個答案:http://stackoverflow.com/a/43359827/7715250 –

回答

2

如果您遇到問題設置方位的應用程序啓動之後,那麼你可能需要停止向每個視圖控制器或它的一個基地導航控制器

斯威夫特3:

class YourBaseNavigationController: UINavigationController { 
override func viewDidLoad() { 
    super.viewDidLoad() 
    UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation") 
} 
override var shouldAutorotate: Bool { 
    return false 
} 
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
    return .portrait 
} 
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { 
    return .portrait 
}} 

使用YourBaseNavigationController作爲您的導航控制器。基本上,此導航控制器中的所有視圖控制器都將強制僅支持縱向模式。

+0

我會試試這個解決方案。 – Ramakrishna

+0

如果我以編程方式將我的根視圖控制器設置爲導航控制器,該怎麼辦? 'nav = UINavigationController(rootViewController:SyncVc)' – Ramakrishna

+0

因此,不要在這裏使用UINavigationController,而應該使用YourBaseNavigationController。 'YourBaseNavigationController(rootViewController:SyncVc)' – RMRAHUL

0

您需要通過代碼禁用方向。

在RootViewController的添加以下代碼:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);//set 'return NO'; for stop orientation 
} 

斯威夫特

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.Portrait 
} 
+0

好的。我會嘗試。 – Ramakrishna

2

取消標記景觀留下的檢查和景觀右

+0

我知道,如果我取消選中左側風景和右側風景,它將以縱向模式工作。但是,如果我取消選中我的SDK有問題的選項。 – Ramakrishna