Ios 无法为导航栏项目设置自定义颜色

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

我正在使用我的AppDelegate中的以下代码设置导航栏项目的颜色。当我使用默认颜色(步骤1)时,它起作用;当我使用自定义颜色(步骤2)时,它不起作用

有人能建议我如何解决这个问题吗

第1步:有效

// 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抱歉,我不明白您的意思。