[英]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.