从SwiftUI的Color种获取RGB的值
所属分类:ios | 发布于 2024-12-23
在使用Core Image的时候,使用的CIColor,它使用的是RGB的表示方式,有时候需要将SwiftUI的Color转换成CIColor,这就需要进行转换。
转换的方法是调用Color的resolve(in: environment)函数。
struct ContentView: View {
@Environment(\.self) var environment
@State private var color = Color.red
@State private var resolvedColor: Color.Resolved?
@State private var colorJSON = ""
var body: some View {
VStack {
ColorPicker("Select your favorite color", selection: $color)
if let resolvedColor {
Text("Red: \(resolvedColor.red)")
Text("Green: \(resolvedColor.green)")
Text("Blue: \(resolvedColor.blue)")
Text("Opacity: \(resolvedColor.opacity)")
}
Text("Color JSON: \(colorJSON)")
}
.padding()
.onChange(of: color, initial: true, getColor)
}
func getColor() {
resolvedColor = color.resolve(in: environment)
if let colorData = try? JSONEncoder().encode(resolvedColor) {
colorJSON = String(decoding: colorData, as: UTF8.self)
}
}
}