繁体   English   中英

Swift扩展无法正常工作

[英]Swift Extension Not working

我为UIColor添加了扩展,以扩展我在整个应用程序中使用的某些颜色。 这是一个例子:

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

但是,当我尝试调用它时,我能够毫无错误地进行编译的唯一方法是:

UINavigationBar.appearance().barTintColor = UIColor.appLightGrayColor(UIColor())()

这是我使用自动完成功能得到的结果:

在此处输入图片说明

我究竟做错了什么?

您已经添加了实例方法,但是您真正想要的是类方法

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

尽管Bryan的答案仍然是正确的,但随着Swift 3的发布,首选的“ Swifty”做事方式已经有所变化。

在Swift 3中,相应地使用了预定义的UIColors:

var myColor: UIColor = .white // or .clear or whatever

因此,如果您想要类似的东西,例如以下...

var myColor: UIColor = .myCustomColor

...然后,您将定义扩展名,如下所示:

extension UIColor
    {
    public class var myCustomColor: UIColor
        {
        return UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1.0)
        }
    }

实际上,Apple将白色定义为:

public class var white: UIColor

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM