Cod*_*ton 7 ios objective-c-category swift xcode6
我已经为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)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用它时,我能够无错误地编译的唯一方法是:
UINavigationBar.appearance().barTintColor = UIColor.appLightGrayColor(UIColor())()
Run Code Online (Sandbox Code Playgroud)
这是我通过自动完成得到的:

我究竟做错了什么?
Bry*_*hen 18
你已经添加了实例方法,但你真正想要的是类方法
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)
}
}
Run Code Online (Sandbox Code Playgroud)
虽然 Bryan 的答案仍然是正确的,但随着 Swift 3 的发布,首选的“Swifty”做事方式发生了一些变化。
在 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)
事实上,苹果将白色定义为:
public class var white: UIColor
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4866 次 |
| 最近记录: |