2017-08-31 45 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>>)"