gpt4 book ai didi

ios - 为 UINavigationController 自定义状态栏背景

转载 作者:行者123 更新时间:2023-12-01 19:47:21 24 4
gpt4 key购买 nike

我想要一个带有白色文本的黑色状态栏。
我使用的一般方法是使用浅色状态栏来创建自定义黑色 View 并将其添加到 View Controller 的顶部

CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
view.backgroundColor = [UIColor blackColor];
[self.view addSubview:view];

如果 View Controller 嵌入在导航 Controller 中,我会这样做
CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
view.backgroundColor = [UIColor blackColor];
[self.navigationController.navigationBar addSubview:view];

然而,这似乎不是一个非常优雅的解决方案,也许有更好的方法?

最佳答案

一种方法是在 keywindow 上添加 View 。无论您的应用是在 UINavigationController 下还是在 UIViewController 下运行,都无关紧要。我通过扩展 UIStatusBarStyle 来做到这一点,如下所示。

extension UIStatusBarStyle {
static func setbackground() {
let view = UIView.init(frame: UIApplication.shared.statusBarFrame)
view.backgroundColor = UIColor.black
UIApplication.shared.keyWindow?.addSubview(view)
}
}

现在从方法 didFinishLaunchingWithOptions 在 appdelegate 中调用此方法。
UIStatusBarStyle.setbackground()

另外,请确保在您的 info.plist 文件中已设置
View controller-based status bar appearance = NO
Status bar style = Opaque black style

关于ios - 为 UINavigationController 自定义状态栏背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com