Swift 右 CustomColor 类声明

标签 swift enums

由于 Swift 中奇怪的颜色解决方案,我需要制作自定义颜色类。我不知道我做得对吗。

我有一个类 CustomColors()

和用法:color = CustomColors().black并且工作完美

但我想使用如下:color = CustomColors(.Black)

我不能这样做:

init(_ Color: Colors) 
{
  switch Colors
     case .Black
        return UIColor(r:255,g:255,b:255,a:255)
}

很多事情我都不知道。有人能给我提供正确的解决方案吗?谢谢。

最佳答案

您可以使用带有方便初始化程序的 UIColor 扩展来代替自定义类,如下所示:

extension UIColor {

    convenience init(color: Colors) {
        switch color {
        case .black:
            self.init(red: 1, green: 1, blue: 1, alpha: 1)
        case .white:
            self.init(red: 1, green: 1, blue: 1, alpha: 1)
        }
    }
}

但我认为如果您使用 struct 的静态属性预先定义颜色会更好,如下所示:

struct Theme {
    static let colorOne = UIColor(red: 0.952941, green: 0.952941, blue: 0.952941, alpha: 1.0) // F3F3F3
    static let colorTwo = UIColor(red: 0.203922, green: 0.203922, blue: 0.203922, alpha: 1.0) // 343434
    // and so on...
}

使用

UILabel().backgroundColor = Theme.colorOne
UILabel().textColor = Theme.colorTwo

关于Swift 右 CustomColor 类声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050808/

相关文章:

swift - 从本地存储加载 UIImages 到 collectionView 非常慢

ios - 当用户在前台且应用程序全新安装时,不会调用 willPresent 和 didReceive 通知委托(delegate)

python - 覆盖枚举 __call__ 方法

mysql - 获取 MySQL 中下一个枚举字段值的名称

c# - 如何使方法适用于任何枚举

java - 在fasterxml中,反序列化json后,如果enum是类中的第一个属性,其他字段为null

PHP:如何从 JSON(从 Swift iOS 应用程序发送)获取变量并用 JSON 响应

ios - 你如何在 Swift 中为 iOS 制作垂直文本 UILabel 和 UITextView?

ios - NSFetchedResultsController 无法识别删除

java - Kotlin中Sealed类和继承原则有什么区别?