#swift #swiftui #hex #rgb
#swift #swiftui #шестнадцатеричный #rgb
Вопрос:
существует ли скомпилированный список шестнадцатеричных кодов или значений RGB для цветов SwiftUI? Я хотел бы знать либо для Color.purple, но, похоже, не могу найти хороших источников. Есть ли способ программно определить шестнадцатеричный код или значение RGB? Или, может быть, я могу посмотреть на некоторые свойства цвета? Заранее спасибо!
Комментарии:
1. Мы можем создавать и использовать шестнадцатеричные или RGB цвета в наших кодах, какова ваша цель сейчас? вы хотите создать или перевести их вместе?
2. Переведите цвета SwiftUI Color по умолчанию в RGB или hex…
Ответ №1:
Если вы кодируете в SwiftUI 2, вы можете преобразовать свой цвет в UIColor и использовать метод getRed для получения красного, зеленого, синего и альфа-компонентов. Как только у вас есть компоненты, вы можете преобразовать значения в шестнадцатеричную строку:
extension Color {
var uiColor: UIColor { .init(self) }
typealias RGBA = (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
var rgba: RGBA? {
var (r, g, b, a): RGBA = (0, 0, 0, 0)
return uiColor.getRed(amp;r, green: amp;g, blue: amp;b, alpha: amp;a) ? (r, g, b, a) : nil
}
var hexaRGB: String? {
guard let (red, green, blue, _) = rgba else { return nil }
return String(format: "#xxx",
Int(red * 255),
Int(green * 255),
Int(blue * 255))
}
var hexaRGBA: String? {
guard let (red, green, blue, alpha) = rgba else { return nil }
return String(format: "#xxxx",
Int(red * 255),
Int(green * 255),
Int(blue * 255),
Int(alpha * 255))
}
}
Color.purple.hexaRGB // "#af52de"
Color.purple.hexaRGBA // "#af52deff"
if let (red, green, blue, alpha) = Color.purple.rgba {
red // 0.686274528503418
green // 0.321568638086319
blue // 0.8705882430076599
alpha // 1
}
Ответ №2:
Разве не хорошо использовать это так?
import UIKit
extension UIColor {
convenience init(hex:Int, alpha: CGFloat = 1.0) {
self.init(
red: CGFloat((hex amp; 0xFF0000) >> 16) / 255.0,
green: CGFloat((hex amp; 0x00FF00) >> 8) / 255.0,
blue: CGFloat((hex amp; 0x0000FF) >> 0) / 255.0,
alpha: alpha
)
}
}
Комментарии:
1. Вопрос помечен как SwiftUI. Он
Color
не используетUIColor