How to access extension of UIColor in Swift?

You have defined an instance method, which means that you can call it only on an UIColor instance:

let col = UIColor().getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor().getCustomBlueColor(), forState: .Normal)

The compiler error "missing argument" occurs because Instance Methods are Curried Functions in Swift, so it could equivalently be called as

let col = UIColor.getCustomBlueColor(UIColor())()

(But that would be a strange thing to do, and I have added it only to explain where the error message comes from.)


But what you really want is a type method (class func)

extension UIColor{
    class func getCustomBlueColor() -> UIColor{
        return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
    }
}

which is called as

let col = UIColor.getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor.getCustomBlueColor(), forState: .Normal)

without the need to create an UIColor instance first.


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

Swift 3, Swift 4, Swift 5:

extension UIColor {
   static let myBlue = UIColor(red:0.043, green:0.576 ,blue:0.588, alpha:1.00) 
}

Use:

btnShare.setTitleColor(.myBlue, for: .normal)

Or

self.view.backgroundColor = .myBlue

If you use Color Set in *.xcassets (iOS11+). For example, you have a color with the name «appBlue». Then:

extension UIColor {

private static func getColorForName(_ colorName: String) -> UIColor {
    UIColor(named: colorName) ?? UIColor.red
}

static var appBlue: UIColor {
    self.getColorForName("appBlue")
}
}

Use:

self.view.backgroundColor = .appBlue