Использование расширения для расширения цветов — хорошее решение, но если приложение имеет несколько пользовательских цветов, то становится повторяющимся писать /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)
}
Другим элегантным решением было бы использовать enum для определения различных пользовательских цветов, а затем добавить свойство, которое будет возвращать значение 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
person
Suhit Patil
schedule
15.02.2018