创建一类颜色

时间:2019-11-05 17:23:47

标签: swift uicolor

在我的应用中,例如,有5种可用颜色可用于不同任务,用户可以随时在它们之间进行选择。我认为最好有一个颜色类,并且在该类中声明几种颜色,在任何控制器中我都可以将这些颜色作为数组访问。例如,当我想显示要拾取的颜色时,我希望它们作为阵列。但是我不知道该怎么做?我创建了一个类,但是在初始化部分,我不知道如何添加颜色

final class Colors {
    var color : [UIColor]

    init(color: [UIColor]) {

    }
}

您的帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

扩展UIColor,将颜色设为静态属性,并将数组设为已计算的静态属性。

答案 1 :(得分:1)

选项1 -您可以扩展UIColor以列出所有颜色并创建数组:

extension UIColor {
    struct GoTimeThemes {
        static let firstColor = UIColor(red: 48.0/255.0, green: 35.0/255.0, blue: 174.0/255.0, alpha: 1.0)
        static let secondColor = UIColor(red: 83.0/255.0, green: 160.0/255.0, blue: 263.0/255.0, alpha: 1.0)
        static let thirdColor = UIColor(red: 146.0/255.0, green: 80.0/255.0, blue: 156.0/255.0, alpha: 1.0)

        static var allColors: [UIColor] {
        let colors = [firstColor, secondColor, thirdColor]
        return colors
        }
    }
}

像这样调用您的数组

let colors = UIColor.GoTimeThemes.allColors

选项2 -您可以将颜色放入符合CaseIterable的枚举中:

enum ThemeColors: CaseIterable {
    case firstTheme, secondTheme, thirdTheme

    var color: UIColor {
        switch self {
        case .firstTheme:
            return UIColor(red: 48.0/255.0, green: 35.0/255.0, blue: 174.0/255.0, alpha: 1.0)
        case .secondTheme:
            return UIColor(red: 83.0/255.0, green: 160.0/255.0, blue: 263.0/255.0, alpha: 1.0)
        case .thirdTheme:
            return UIColor(red: 146.0/255.0, green: 80.0/255.0, blue: 156.0/255.0, alpha: 1.0)
        }
    }
}

并用allCases调用以获取收藏集:

ThemeColors.allcases //→ [firstTheme, secondTheme, thirdTheme]

答案 2 :(得分:0)

  

我认为最好有一个颜色类,并且在该类中声明了几种颜色,在任何控制器中我都可以将它们作为数组访问。

为此,枚举将很好地工作。颜色是固定的,对吗?听起来您不需要颜色集的不同实例,并且能够访问颜色而不需要创建对象或为共享对象而烦恼可能会很好。枚举为您提供了一组离散值,并且可以具有与其关联的方法。例如,您可能有一个darkGreen值,然后有uiColor()cgColor()之类的方法返回与该值相对应的UIColorCGColor对象。 / p>