一尘不染

如何在Swift中访问UIColor的扩展?

swift

我是新手,尝试快速创建UIColor类的扩展为

extension UIColor{

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

}

之后,我以以下方式访问该方法

btnShare.setTitleColor(UIColor.getCustomBlueColor(**UIColor**), forState: UIControlState.Normal)

我不知道该声明应作为参数传递给我。


阅读 182

收藏
2020-07-07

共1个答案

一尘不染

您已经定义了一个 实例方法 ,这意味着您只能在一个UIColor实例上调用它:

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

发生编译器错误“缺少参数”是因为 实例方法是Swift中的Curried
Function
,因此可以等效地称为

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

(但这是一件奇怪的事情,我添加它只是为了解释错误消息的来源。)


但是,您真正想要的是 类型方法class func

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

被称为

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

无需先创建UIColor实例。

2020-07-07