Ios 无法为导航栏项目设置自定义颜色
我正在使用我的AppDelegate中的以下代码设置导航栏项目的颜色。当我使用默认颜色(步骤1)时,它起作用;当我使用自定义颜色(步骤2)时,它不起作用 有人能建议我如何解决这个问题吗 第1步:有效Ios 无法为导航栏项目设置自定义颜色,ios,swift,uikit,Ios,Swift,Uikit,我正在使用我的AppDelegate中的以下代码设置导航栏项目的颜色。当我使用默认颜色(步骤1)时,它起作用;当我使用自定义颜色(步骤2)时,它不起作用 有人能建议我如何解决这个问题吗 第1步:有效 // Set navigation bar, background color UINavigationBar.appearance().barTintColor = UIColor.red 步骤2:不起作用 // Set navigation bar, background color UI
// Set navigation bar, background color
UINavigationBar.appearance().barTintColor = UIColor.red
步骤2:不起作用
// Set navigation bar, background color
UINavigationBar.appearance().barTintColor = UIColor(red: 41, green: 150, blue: 204, alpha: 1)
这是我的UIColor的扩展名,在我的一个styles.swift文件中实现
extension UIColor {
convenience init(_ r: Double,_ g: Double,_ b: Double,_ a: Double) {
self.init(red: CGFloat(r/255), green: CGFloat(g/255), blue: CGFloat(b/255), alpha: CGFloat(a))
}
}
UIColor的
init
采用CGFloat
参数,CGFloat
是Double
的类型定义。尝试将扩展名更改为接受Int
作为参数,而不是Double
您的扩展名是错误的。你必须除以一个浮点数。到现在为止,你正在除以一个整数,所以你可能只得到0或1
它应该是“r/255.0”等
编辑:正如其他人指出的,您没有使用扩展
应该是
UIColor(41, 150, 204, 1)
在UIColor扩展上,是否需要定义便利初始化?或者你就不能用:
public func rgba(_ r:Int, _ g:Int, _ b:Int, _ a:CGFloat) -> UIColor {
return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: a)
}
您使用的是默认初始化器,而不是扩展中实现的初始化器: 删除代码中的参数,如下所示:
UINavigationBar.appearance().barTintColor = UIColor(41, 150, 204,1)
您实际上没有正确使用扩展名 要使用它,就这样打电话
UINavigationBar.appearance().barTintColor = UIColor(41,150,204,1)
当您在方法定义中使用下划线\uuu
字符作为方法名称时,在调用它时必须省略方法名称。试试这个
extension UIColor {
static func rgb( red : CGFloat, green : CGFloat, blue : CGFloat) -> UIColor {
return UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1)
}
}
步骤2:
UINavigationBar.appearance().barTintColor = UIColor.rgb(41,150,204)
将
255
替换为255.0
除以255将使结果为0或1,是Int
类型,您必须使其为双精度、浮点或CGfloat抱歉,我不明白您的意思。