具有自定义颜色的 UIColor 扩展是真实的吗?
Extension for UIColor with custom colors it is real?
我的应用程序有一些自定义颜色,现在它像字典一样保存,但我认为这不是一个好主意,我想用自定义颜色扩展 UIColor。
可能看起来像这样
var newColor = UIColor.MyColor // like UIColor.white
也许我应该在扩展中添加一个带有我的颜色的枚举?
在 UIColor 扩展中创建 class 属性
extension UIColor
{
class var themeColor:UIColor {
return UIColor(red: 210.0/255.0, green: 105.0/255.0, blue: 130.0/255.0, alpha: 1.0)
}
}
或
extension UIColor {
static let themeColor = UIColor(red: 210.0/255.0, green: 105.0/255.0, blue: 130.0/255.0, alpha: 1.0)
}
用法
self.view.backgroundColor = UIColor.themeColor
使用扩展来扩展颜色是一个很好的解决方案,但如果应用程序有多种自定义颜色,那么为每种颜色编写 /255.0
就会变得重复。我们可以添加采用 RGB
值并转换为颜色的扩展。
extension UIColor {
/// color components value between 0 to 255
public convenience init(r: Int, g: Int, b: Int, alpha: CGFloat = 1.0) {
self.init(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha)
}
static let customRed: UIColor = UIColor(r: 255, g: 1, b: 1)
}
另一个优雅的解决方案是使用枚举来定义不同的自定义颜色然后添加一个 属性 这将 return 使用上面定义的颜色扩展的 UIColor 值
enum ColorTheme {
case customRed
case customGreen
case customBlue
var color: UIColor {
switch self {
case .customRed:
return UIColor(r: 255, g: 1, b: 1)
case .customGreen:
return UIColor(r: 1, g: 255, b: 1)
case .customBlue:
return UIColor(r: 1, g: 1, b: 255)
}
}
}
那么它可以用作
view.backgroundColor = ColorTheme.customRed.color
我的应用程序有一些自定义颜色,现在它像字典一样保存,但我认为这不是一个好主意,我想用自定义颜色扩展 UIColor。
可能看起来像这样
var newColor = UIColor.MyColor // like UIColor.white
也许我应该在扩展中添加一个带有我的颜色的枚举?
在 UIColor 扩展中创建 class 属性
extension UIColor
{
class var themeColor:UIColor {
return UIColor(red: 210.0/255.0, green: 105.0/255.0, blue: 130.0/255.0, alpha: 1.0)
}
}
或
extension UIColor {
static let themeColor = UIColor(red: 210.0/255.0, green: 105.0/255.0, blue: 130.0/255.0, alpha: 1.0)
}
用法
self.view.backgroundColor = UIColor.themeColor
使用扩展来扩展颜色是一个很好的解决方案,但如果应用程序有多种自定义颜色,那么为每种颜色编写 /255.0
就会变得重复。我们可以添加采用 RGB
值并转换为颜色的扩展。
extension UIColor {
/// color components value between 0 to 255
public convenience init(r: Int, g: Int, b: Int, alpha: CGFloat = 1.0) {
self.init(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha)
}
static let customRed: UIColor = UIColor(r: 255, g: 1, b: 1)
}
另一个优雅的解决方案是使用枚举来定义不同的自定义颜色然后添加一个 属性 这将 return 使用上面定义的颜色扩展的 UIColor 值
enum ColorTheme {
case customRed
case customGreen
case customBlue
var color: UIColor {
switch self {
case .customRed:
return UIColor(r: 255, g: 1, b: 1)
case .customGreen:
return UIColor(r: 1, g: 255, b: 1)
case .customBlue:
return UIColor(r: 1, g: 1, b: 255)
}
}
}
那么它可以用作
view.backgroundColor = ColorTheme.customRed.color