I've added an extension to UIColor for some colors that I use throughout my app. Here's an example:
extension UIColor {
func appLightGrayColor() -> UIColor {
return UIColor(red: 190.0/255.0, green: 190.0/255.0, blue: 190.0/255.0, alpha: 1.0)
}
func grayScaleColor(grayScale : CGFloat) -> UIColor {
return UIColor(red: grayScale/255.0, green: grayScale/255.0, blue: grayScale/255.0, alpha: 1.0)
}
}
However, when I try to call it, the only way that I've been able to compile without errors is this:
UINavigationBar.appearance().barTintColor = UIColor.appLightGrayColor(UIColor())()
Here's what I get with autocomplete:
What am I doing wrong?
You have added instance method, but what you really want is class method
extension UIColor {
class func appLightGrayColor() -> UIColor {
return UIColor(red: 190.0/255.0, green: 190.0/255.0, blue: 190.0/255.0, alpha: 1.0)
}
class func grayScaleColor(grayScale : CGFloat) -> UIColor {
return UIColor(red: grayScale/255.0, green: grayScale/255.0, blue: grayScale/255.0, alpha: 1.0)
}
}
While Bryan's answer is still correct, with the release of Swift 3, the preferred "Swifty" way of doing things has changed a bit.
With Swift 3, predefined UIColors are used accordingly:
var myColor: UIColor = .white // or .clear or whatever
Therefore, if you want something similar, such as the following...
var myColor: UIColor = .myCustomColor
...then, you would define the extension like so:
extension UIColor
{
public class var myCustomColor: UIColor
{
return UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1.0)
}
}
In fact, Apple defines white as:
public class var white: UIColor
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With