当前位置: 首页 > 面试题库 >

在Swift 3中更改状态栏背景颜色

宁浩博
2023-03-14
问题内容

在XCode 7.3.x中,我用以下方法更改了StatusBar的背景颜色:

func setStatusBarBackgroundColor(color: UIColor) {
guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
    return
}
statusBar.backgroundColor = color
}

但是似乎这在Swift 3.0中不再起作用。

病态尝试:

func setStatusBarBackgroundColor(color: UIColor) {
guard  let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
    return
}
statusBar.backgroundColor = color
}

但这给了我:

this class is not key value coding-compliant for the key statusBar.

有任何想法如何使用XCode8 / Swift 3.0进行更改吗?


问题答案:

extension UIApplication {
var statusBarView: UIView? {
if responds(to: Selector((“statusBar”))) {
return value(forKey: “statusBar”) as? UIView
}
return nil
}
}


UIApplication.shared.statusBarView?.backgroundColor = .red

iOS 13更新

在UIApplication上名为-statusBar或-
statusBarWindow的应用程序:必须更改此代码,因为不再有状态栏或状态栏窗口。而是在窗口场景上使用statusBarManager对象。



 类似资料:
  • 我当前的应用程序运行在iOS 4.2、5和6上。 导航栏为橙色,状态栏为黑色背景色。然而,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同。 因此,我无法区分状态栏和导航栏。如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?我如何通过编程实现这一点? 我在谷歌上搜索了一下,发现一个建议,我必须添加一个黑色背景,大约20像素高的

  • 所以,我试图做到: 我试着在状态栏后面使用UIView,并将颜色设置为橙色,但运行时,UIView显示在状态栏的正下方,因此仍然是白色 我在互联网上尝试了很多解决方案,但都不管用。是的,它可以工作,但当我移动到另一个视图控制器并再次返回时,颜色消失了。我该怎么办?我用的是斯威夫特

  • 我可以将状态栏文本变成白色,但不能将背景变成较暗的色调,然后是导航栏?我需要在上面添加一个单独的视图吗?如果是这样的话,我怎么能把它放在导航栏上呢?

  • 我当前的应用程序运行在iOS 5和iOS 6上。 导航栏的颜色为橙色,状态栏的背景颜色为黑色,文本颜色为白色。但是,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同,并且状态栏文本颜色为黑色。 因此,我无法区分状态栏和导航栏。 如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?如何以编程方式执行此操作?

  • 随着13iOS状态的到来,酒吧的视图不再通过槽访问: 由于: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIApplication上调用了-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,必须更改此代码。”。“请使用“场景”窗口上的状态栏。” 但是不清楚它应该如何用于更改颜色,因为似乎

  • 我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景 我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗? 谢谢