iOS 在WebView内点击视频全屏播放,退出后导致状态栏被隐藏

遇坑情景

在项目中有一个使用WKWebView来加载新闻页面的情况,在一般的文字加图片的新闻当中,运行情况良好,但是突然发现有一些新闻页面内含有视频。在点击播放视频播放的时候,视频会自动全屏播放(这个不知道到是前端还是客户端的原因),退出全屏后发现状态栏消息不见了,导航栏也上移了20个像素。

经过度娘后看到了一个解决方案,不过有一定时间了,并且结合自己的状况做了一些修改。

解决思路

状态栏是在视频全屏播放的时候被隐藏的,我们要做的就是在退出视频全屏播放的时候,把状态栏取消隐藏。因此我们需要找到监听,视频退出全屏时的方法。

视频全屏播放时的视图层级

视图层级

在这个视图层级中我们可以看到,当我们播放webView中的视频的时候,会进入全屏播放,系统会增加一个UIWindow层级,然后在该层级上增加一个AVPlayerviewController播放器,这里我们很难获得或者监听到这个播放器,但是我们可以监听这个新增的UIWindow。

代码

//监听UIWindow显示
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(beginFullScreen) name:UIWindowDidBecomeVisibleNotification object:nil];
//监听UIWindow隐藏
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(endFullScreen) name:UIWindowDidBecomeHiddenNotification object:nil];
-(void)endFullScreen{
    NSLog(@"退出全屏");
    [[UIApplication sharedApplication]setStatusBarHidden:false animated:false];
}

说明

播放webView内的视频的时候,视频会自动强制的全屏播放(前面已经提及,不清楚是Html的原因,还是webview的设置问题,了解的朋友可以解析一下。)全屏播放的时候,会增加一个UIWindow层,由于状态栏的隐藏是自动的,所以我只需要监听视频退出全屏,也就是UIWindow隐藏的时候,把状态栏取消隐藏!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,054评论 3 119
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,972评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,879评论 1 32
  • 家庭幸福有秘诀吗? 《终身成长》第六章 今天我们要探讨的问题是如何创造美满幸福的家庭生活? 在家庭生活中,我们随时...
    明月书心堂阅读 1,666评论 0 2
  • 这是leo365日写作计划第29天的写作内容 交谈时要避免以下几点: 不要忽视其他人的感受 仔细倾听,判断对方感受...
    炽焰烨阅读 1,603评论 0 1

友情链接更多精彩内容