How to access extension of UIColor in Swift?
You have defined an instance method, which means that you can callit 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 becauseInstance 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 toexplain 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