iOS 在WebView內點擊視頻全屏播放,退出后導致狀態(tài)欄消失

遇坑情景

在項目中有一個使用WKWebView來加載新聞頁面的情況,在一般的文字加圖片的新聞當中,運行情況良好,但是突然發(fā)現(xiàn)有一些新聞頁面內含有視頻。在點擊播放視頻播放的時候,視頻會自動全屏播放(這個不知道到是前端還是客戶端的原因),退出全屏后發(fā)現(xiàn)狀態(tài)欄消息不見了,導航欄也上移了20個像素。

視圖層級分布剖析:


解決思路

狀態(tài)欄是在視頻全屏播放的時候被隱藏的,我們要做的就是在退出視頻全屏播放的時候,把狀態(tài)欄取消隱藏。因此我們需要找到監(jiān)聽,視頻退出全屏時的方法。

視頻全屏播放時的視圖層級

視圖層級

在這個視圖層級中我們可以看到,當我們播放webView中的視頻的時候,會進入全屏播放,系統(tǒng)會增加一個UIWindow層級,然后在該層級上增加一個AVPlayerviewController播放器,這里我們很難獲得或者監(jiān)聽到這個播放器,但是我們可以監(jiān)聽這個新增的UIWindow。

代碼

//監(jiān)聽UIWindow顯示

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(beginFullScreen) name:UIWindowDidBecomeVisibleNotification object:nil];

//監(jiān)聽UIWindow隱藏

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(endFullScreen) name:UIWindowDidBecomeHiddenNotification object:nil];

-(void)endFullScreen{

? ? NSLog(@"退出全屏");

? ? [[UIApplication sharedApplication]setStatusBarHidden:false animated:false];

}

說明

播放webView內的視頻的時候,視頻會自動強制的全屏播放

(下面解釋下這點:可以設置??!這個地方牽扯到WKWebView的config 中有一個屬性config.allowsInlineMediaPlayback = YES;//是否允許內聯(lián)(YES)或使用本機全屏控制器(NO),默認是NO。可以通過修改allowsInlineMediaPlayback的屬性值,來控制網(wǎng)頁中的視頻是內聯(lián)播放還是全屏播放)

當不設置allowsInlineMediaPlayback這個屬性,默認是No.?

全屏播放的時候,會增加一個UIWindow層,由于狀態(tài)欄的隱藏是自動的,所以我只需要監(jiān)聽視頻退出全屏,也就是UIWindow隱藏的時候,把狀態(tài)欄取消隱藏!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容