iOS状态栏背景色无法设置为自定义颜色,原生灰色正常生效
解决自定义RGB颜色设置状态栏背景变黑色的问题
这个问题我之前踩过一模一样的坑!核心原因是Swift的整数除法特性在搞鬼:
- 你写的
30/255里,30和255都是整数类型,Swift中整数除以整数会直接取整,结果是0,而不是你预期的≈0.117的浮点数 - 所以实际生效的颜色是
UIColor(red: 0, green: 0, blue: 0, alpha: 1)——纯黑色,自然和你想要的深灰色完全不符
正确的写法
只需要把其中一个数值改成浮点数,让除法运算得到浮点数结果就行,有几种直观的方式:
// 方式1:把分子改成浮点数 UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 30.0/255, green: 30.0/255, blue: 30.0/255, alpha: 1) // 方式2:把分母改成浮点数 UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 30/255.0, green: 30/255.0, blue: 30/255.0, alpha: 1)
额外小技巧(避免重复踩坑)
如果经常需要自定义RGB颜色,可以给UIColor写个扩展,把除以255的逻辑封装起来,用起来更省心:
extension UIColor { convenience init(r: CGFloat, g: CGFloat, b: CGFloat, alpha: CGFloat = 1.0) { self.init(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: alpha) } } // 使用时直接传0-255的数值即可 UIApplication.shared.statusBarView?.backgroundColor = UIColor(r: 30, g: 30, b: 30)
内容的提问来源于stack exchange,提问作者Said-Abdulla Atkaev
相关产品推荐
相关产品推荐

