Safari View Controller使用错误的状态栏颜色

fun*_*len 14 colors statusbar uinavigationbar ios sfsafariviewcontroller

我的应用程序使用深色导航栏颜色.因此我将状态栏颜色设置为白色(因此它具有很好的对比度).

带有白色状态栏的红色导航栏

我通过将barStyle设置为黑色(使状态栏变为白色)并将barTint设置为深红色来完成此操作.完美的工作.

我提出这样的一个SafariViewController:

func openWebsite(urlString: String) {
    if let url = NSURL(string: urlString) {
        let svc = SFSafariViewController(URL: url)
        svc.delegate = self
        self.presentViewController(svc, animated: true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,呈现的状态栏SafariViewController仍为白色.这是一个问题,因为SVC导航栏具有默认的白色透明iOS默认样式.所以状态栏基本上是不可见的.

safari视图控制器与白色状态栏颜色

我该如何解决这个问题?

Dav*_*Liu 0

有两种方法可以覆盖 viewController 中的 PreferredStatusBarStyle 并返回您想要的一种

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .Default
}
Run Code Online (Sandbox Code Playgroud)

或者你可以手动设置

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
Run Code Online (Sandbox Code Playgroud)

然而,要通过sharedApplicaion设置它,您需要将其添加到您的plist中“查看基于控制器的状态栏外观”为NO 在此输入图像描述