仅在iOS 12中WKWebView中的全屏视频后状态栏消失

kid*_*per 12 xcode xcode10 xcode10beta6

正如您所看到的,这只发生在iOS 12中.

iOS 12 iOS 11

在此输入图像描述在此输入图像描述

这是我的代码:

import UIKit
import WebKit

class ViewController: UIViewController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webView = WKWebView(frame: UIScreen.main.bounds)
        view.addSubview(webView)
        webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        webView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        webView.loadHTMLString("<p><iframe src=\"https://www.youtube.com/embed/HCjNJDNzw8Y\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"\"></iframe></p>", baseURL: URL(string: "https://www.youtube.com/"))
        setNeedsStatusBarAppearanceUpdate()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的info.plist就在下面: 在此输入图像描述

有谁知道如何解决它?

我知道,如果我设置键View controller-based status bar appearanceYES帮助,但在这种情况下,它看起来就像这样:

在此输入图像描述

从白色和黑色改变状态栏的原因不明,而且我的真实项目是大规模的,所以在原始设置中解决它会很好,而不是让每个ViewController继承自一个属于子类的类. UIViewController中或添加dynamic的覆盖prefersStatusBarHiddenpreferredStatusBarStyle在扩展(这里只是试图迫使它显示更新状态栏时,View controller-based status bar appearance设置为YES)

希望有一个解决方案View controller-based status bar appearance设置NO,这将是非常有用的thx.

是演示项目,它是由Xcode9.4创建的,随意尝试.

小智 8

info.plist文件中删除以下属性.并以编程方式提供它.

状态栏最初隐藏:NO

查看基于控制器的状态栏外观:否

状态栏样式:UIStatusBarStyleLightContent

它可能适合你.


小智 5

使用此解决方案:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoExitFullScreen:) name:@"UIWindowDidBecomeHiddenNotification" object:nil];
...
}

- (void)videoExitFullScreen:(id)sender
{
  [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

参考更多在这里:

https://github.com/react-native-community/react-native-webview/issues/62