以某种方式将自定义.colorNames添加到UIColor?

时间:2017-01-08 16:42:24

标签: swift colors sprite-kit uicolor

我非常喜欢使用这样的颜色的快捷方式:

myLabel.fontColor = .gray

制作我自己的,像这样:

static let fadedGreen = SKColor.init(hue: 0.33,
                                     saturation: 1,
                                     brightness: 0.33,
                                     alpha: 1.0)

但是这需要调用我已经把它放入的类来使用这样的缩写fadedGreen

myLabel.fontColor = MyStorageClass.fadedGreen

问题:

有没有办法可以扩展或以其他方式添加(我假设的)枚举UIColor的预设,这样我就可以制作自己的颜色,只需使用这样的.点:

myLabel.fontColour = .myCustomColor

......来自我项目的任何地方?

这是否意味着他们也可以立即使用SKColor .presets

请原谅我完全不了解如何做这样的事情。

2 个答案:

答案 0 :(得分:2)

那些不是真正的颜色快捷方式。这只是推断一种类型。 fontColor属性的类型为UIColor,而UIColor在上有一堆只读属性,它们是颜色名称和返回颜色对象。所以当你说

myLabel.fontColor = .myCustomColor

点告诉它“它是某个地方的某个地方,猜猜在哪里”而且Swift去了,好吧,我需要一个UIColor,所以让我们看看UIColor类是否具有返回该名称的属性正确的类型。

所以要添加自己的,你必须在UIColor的扩展名中定义你的颜色属性。

extension UIColor {
    static let con_pink = UIColor( red: 1.0, green: 0.0, blue: 0.5, alpha: 1.0 )
}

以及可以用作myLabel.fontColor = .con_pink的那些。

但请注意,如果你这样做,你就有可能碰到苹果可能在未来添加的任何颜色方法。因此,我建议您为属性名称添加前缀(我根据您的用户名为您选择“con_”),以减少Apple使用相同名称的可能性。

答案 1 :(得分:1)

您可以简单地准备一个包含所有习惯常量的.swift文件,例如:

<强> Constants.swift:

import Foundation
import UIKit

// MY COLORS
let sandColor = UIColor(red: 239/255, green: 212/255, blue: 111/255, alpha: 1)

然后,您可以在代码中的任何位置(无点):

mySprite.color = sandColor

很明显,您也可以将UIColor扩展为:

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

<强>用法

let myColor = UIColor.fadedGreen()