2017-07-18 50 views
1

我在我的AppDelegate中使用以下代码来设置导航栏项目的颜色。它在我使用默认颜色(步骤1)时起作用,而在使用自定义颜色时不起作用(步骤2)。无法将自定义颜色设置为导航栏项目iOS Swift

有人可以请建议我如何解决这个问题吗?

第一步:工程

// 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)) 
    } 
} 
+1

替换'255'与'255.0' – Desdenova

+0

分至255将使结果是0或1,是'Int'类型,则必须使它双,浮动或CGFloat – Tj3n

回答

1

尝试此

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) 
0

UIColor的init需要CGFloat参数,并且CGFloatDouble的类型定义。尝试更改您的分机号以接受Int作为参数而不是Double

0

您的分机号有误。你必须除以浮动。截至目前你是一个Int分割,所以你很可能刚开0或1

它应该是“R/255.0”等等

编辑:正如其他人指出的那样,你是不使用你的扩展。

应该

UIColor(41, 150, 204, 1) 
+0

对不起,我不明白你的意思。 – Pochi

-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) 
} 
1

您使用的是默认初始化器,而不是一个在扩展实现:

在你的代码中删除PARAMS像这样:

UINavigationBar.appearance().barTintColor = UIColor(41, 150, 204,1) 
0

您实际上并未正确使用您的扩展程序。

要使用它,这样调用,

UINavigationBar.appearance().barTintColor = UIColor(41,150,204,1) 

当您使用下划线在方法定义方法名_人物,你必须调用它时省略方法名。

相关问题