Swift右键CustomColor类声明

时间:2018-03-01 13:32:17

标签: swift enums

因为swift中的奇怪颜色解决方案我需要制作customcolor类。我不知道我做得对。

我有一个CustomColors()

和用法:color = CustomColors().black并且效果很好

但我希望使用:color = CustomColors(.Black)

我不能这样做:

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

很多我不知道的事情。有人可以帮我解决问题吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用带有便利初始值设定项的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

答案 1 :(得分:0)

您可以使用自定义颜色向UIColor类添加扩展名:

import UIKit

extension UIColor {
    static var mediumTurquoise: UIColor {
        return UIColor(red:0.31, green:0.82, blue:0.8, alpha:1)
    }
}

请确保RGB的值介于0.0和1.0之间。

您可以将自定义颜色用作UIolor.mediumTurquoise