横屏页面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的主要内容,如果未能解决你的问题,请参考以下文章

横屏页面present一个竖屏VC

iOS 个别页面强制横屏,其他页面竖屏

苹果电脑横屏怎么调竖屏

Android 4.0 ,如何截屏,当竖屏时。

移动端如何强制页面横屏

Swift 支持某个页面横竖屏切换与强制横屏