横屏页面present一个竖屏VC
Posted hherima
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了横屏页面present一个竖屏VC相关的知识,希望对你有一定的参考价值。
present异常录屏
转屏异常
present正常录屏
转屏成功
这里面涉及两个VC:横屏FullscreenVC和竖屏LaunchVC,从后台切到前台时候,LaunchVC要present出来。
调试代码发现:首先LaunchVC是present在FullscreenVC上的,当 dismiss的时候。系统都在调佣FullscreenVC和LaunchVC的方法
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
即使FullscreenVC和LaunchVC返回的都是各自的mask方向。仍有可能FullscreenVC使用了LaunchVC的UIInterfaceOrientationMaskPortrait方向。会导致FullscreenVC的frame是竖屏的。
解决办法是:在LaunchVC即将dismiss时候,标记一个属性isDismissed。然后再supportedInterfaceOrientations中返回
UIInterfaceOrientationMaskLandscape
方法如下:正常逻辑还是返回Portrait,但是如果isDismissed是true就返回Landscape ,意思是提前返回下面VC的方向。
//启动图一直竖屏的,这里返回UIInterfaceOrientationMaskLandscape是为了兼容全屏播放时候。不让播放器转
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
UIInterfaceOrientationMask mask = UIInterfaceOrientationMaskPortrait;
if (self.isDismissed && VideoPlayerViewModeFullscreen == videoPlayerVC.viewMode)
mask = UIInterfaceOrientationMaskLandscape;
return mask;
这样 FullscreenVC会使用Landscape方向了。isDismissed的置位就在LaunchVC调用dismissViewControllerAnimated时候。
以上是关于横屏页面present一个竖屏VC的主要内容,如果未能解决你的问题,请参考以下文章