Search code examples
iosswiftxcode6objective-c-category

Swift Extension Not working


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:

enter image description here

What am I doing wrong?


Solution

  • 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