19 extension-methods uicolor ios swift
我是一个非常新的快速尝试创建UIColor类的扩展
extension UIColor{
func getCustomBlueColor() -> UIColor{
return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
}
Run Code Online (Sandbox Code Playgroud)
在此之后我访问了方法
btnShare.setTitleColor(UIColor.getCustomBlueColor(**UIColor**), forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)
我不知道我应该通过什么作为这个陈述的论据.
Mar*_*n R 47
您已经定义了一个实例方法,这意味着您只能在UIColor实例上调用它:
let col = UIColor().getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor().getCustomBlueColor(), forState: .Normal)
Run Code Online (Sandbox Code Playgroud)
编译器错误"缺少参数"发生是因为 实例方法是Swift中的Curried Functions,所以它可以等效地被称为
let col = UIColor.getCustomBlueColor(UIColor())()
Run Code Online (Sandbox Code Playgroud)
(但这样做会很奇怪,而且我只是为了解释错误信息的来源而添加它.)
但你真正想要的是一种类型方法(class func)
extension UIColor{
class func getCustomBlueColor() -> UIColor{
return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
}
}
Run Code Online (Sandbox Code Playgroud)
被称为
let col = UIColor.getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor.getCustomBlueColor(), forState: .Normal)
Run Code Online (Sandbox Code Playgroud)
无需先创建UIColor实例.
Gen*_*rco 24
使用Swift 3,可以相应地使用预定义的UIColors:
var myColor: UIColor = .white // or .clear or whatever
Run Code Online (Sandbox Code Playgroud)
因此,如果你想要类似的东西,比如下面......
var myColor: UIColor = .myCustomColor
Run Code Online (Sandbox Code Playgroud)
...然后,您将像这样定义扩展名:
extension UIColor
{
public class var myCustomColor: UIColor
{
return UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,Apple将白色定义为:
public class var white: UIColor
Run Code Online (Sandbox Code Playgroud)
Yur*_*nko 18
Swift 3,Swift 4:
extension UIColor {
static let myBlue = UIColor(red:0.043, green:0.576 ,blue:0.588, alpha:1.00)
}
Run Code Online (Sandbox Code Playgroud)
使用:
btnShare.setTitleColor(.myBlue, for: .normal)
Run Code Online (Sandbox Code Playgroud)
要么
self.view.backgroundColor = .myBlue
Run Code Online (Sandbox Code Playgroud)