2017-04-07 59 views
1

我有一種情況,需要在應用程序中創建一個新的UIWindow。我也希望新窗口以縱向方向鎖定,但我的應用程序的原始窗口應爲而不是被縱向鎖定。在單獨的UIWindow中鎖定狀態欄方向

我建立我的新窗口,像這樣:

newWindow = UIWindow(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)) 
newWindow?.rootViewController = ViewController2() 
newWindow?.makeKeyAndVisible() 

而且ViewController2鎖定方位:

override var shouldAutorotate: Bool { 
    return false 
} 

的問題是,當顯示的新窗口,用戶旋轉設備,應用程序本身會鎖定在縱向狀態,但狀態欄會旋轉到橫向模式: enter image description here

如何確保狀態欄在我的新窗口中鎖定在肖像中?

如果有人想看到這個動作在一個簡單的項目:https://github.com/rajohns08/StatusBar

回答

1

使用此文檔您的問題 https://developer.apple.com/reference/uikit/uiinterfaceorientationmask

或 的解決方案是在應用程序的委託。你可以單獨處理每個窗口的支持的方向,在那裏:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    // check, which window is asking and return the mask 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 
+0

我結束了使用這個委託方法,但檢查傳入方法的窗口沒有工作。我必須檢查UIApplication的keyWindow並返回適當的掩碼。 –