2017-08-31 154 views
0

我們的應用程序的設備方向只有肖像,但有一個視頻播放器視圖需要旋轉到橫向和向後旋轉;supportedInterfaceOrientationsForWindow似乎不再起作用了嗎?

我嘗試使用supportedInterfaceOrientationsForWindow方法在AppDelegate中,但似乎不工作了?

Xcode的8.3.3,iOS的10.3.2,部署TARGIT是8.0。

我需要將代碼粘貼?

回答

0

如果你正在做使用window方法參數,請嘗試使用self.window代替。在輪換期間,window_UIInteractiveHighlightEffectWindow,可能不是您所需要的。

我在supportedInterfaceOrientationsForWindow代碼返回取決於哪個視圖控制器是可見的不同UIInterfaceOrientationMask值。在從縱向視圖控制器到橫向視圖控制器的細分過程中,在window方法參數上查找可見視圖控制器時,可見視圖控制器始終是不帶導航控制器,父視圖控制器,子視圖控制器或子視圖的通用UIViewController類。

當使用self.window代替,可見視圖控制器是一個I預期(即需要景觀要顯示的視圖控制器中的一個)。

這裏的windowself.window之間的差的一個例子,當旋轉期間調用的方法:

(lldb) po window.debugDescription 
"Optional(<_UIInteractiveHighlightEffectWindow: 0x106325960; frame = (0 0; 667 375); hidden = YES; gestureRecognizers = <NSArray: 0x1c4444a40>; layer = <UIWindowLayer: 0x1c4235c60>>)" 

(lldb) po self.window.debugDescription 
"Optional(<UIWindow: 0x106409840; frame = (0 0; 667 375); autoresize = W+H; gestureRecognizers = <NSArray: 0x1c0054c40>; animations = { position=<CABasicAnimation: 0x1c02323c0>; bounds.origin=<CABasicAnimation: 0x1c0232480>; bounds.size=<CABasicAnimation: 0x1c02324a0>; }; layer = <UIWindowLayer: 0x1c0223a00>>)"