首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SFSafariViewController状态栏样式

SFSafariViewController状态栏样式
EN

Stack Overflow用户
提问于 2015-10-16 14:29:24
回答 4查看 5.2K关注 0票数 17

我的应用程序的statusbar样式是UIStatusBarStyleLightContent,它在我的rootViewController中设置为preferredStatusBarStyle

现在我遇到了一个问题,当从我的应用程序中打开SFSafariViewController时,它继承了SFSafariViewController的白色背景上的状态条样式。

有办法为SFSafariViewController设置statusbar样式吗?

我试图将SFSafariViewController子类化并重写此方法,但这并没有帮助。

代码语言:javascript
运行
复制
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleDefault;
}

更新:

[UIApplication sharedApplication setStatusBarStyle:]可以做到这一点,但是在iOS 9中不推荐这种方法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-08 04:17:15

您根本不必对SFSafariViewController进行子类分类。

modalPresentationCapturesStatusBarAppearance = true只在您的实例 SFSafariViewController 上设置,它将自己处理其余的.

这是因为它自己的默认preferredStatusBarStyle是,您猜到了,.default。视图层次结构仍然依赖于呈现视图控制器来获取状态栏外观,因此通过将modalPresentationCapturesStatusBarAppearance设置为true,它将是接收方请求的状态栏外观。

TL;DR

代码语言:javascript
运行
复制
safariViewController.modalPresentationCapturesStatusBarAppearance = true

(当UIViewControllerBasedStatusBarAppearance设置为Info.plist中的NO时,此行为将被重写,不起作用)

票数 26
EN

Stack Overflow用户

发布于 2016-04-28 20:23:21

这不是最好的解决办法,但有效。

代码语言:javascript
运行
复制
class MySafariViewContoller: SFSafariViewController {

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(true)

        UIApplication.sharedApplication().statusBarStyle = .Default
    }

    override func viewWillDisappear(animated: Bool) {
        super.viewWillAppear(false)

        UIApplication.sharedApplication().statusBarStyle = .LightContent
    }
}

根据您的喜好更改.Default和.LightContent。

票数 9
EN

Stack Overflow用户

发布于 2017-05-17 10:58:22

你可以使用扩展。

代码语言:javascript
运行
复制
extension SFSafariViewController {

    override open func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        UIApplication.shared.statusBarStyle = .default
    }

    override open func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)
        UIApplication.shared.statusBarStyle = .lightContent
    }

}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33172960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档