如何在SwiftUI中的@AppStorage中保存颜色

3

我想将一个颜色值保存在@AppStorage中,但是出现了错误。我该如何解决?

    @AppStorage ("selectedColor") var selectedColor: Color = .teal

enter image description here

1个回答

4
把颜色保存为字符串
@AppStorage ("selectedColor") var selectedColor: String = ""

创建一个函数,将颜色转换为字符串。
func updateCardColorInAppStorage(color: Color)-> String {

 let uiColor = UIColor(color)
 var red: CGFloat = 0
 var green: CGFloat = 0
 var blue: CGFloat = 0
 var alpha: CGFloat = 0
 uiColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)

 return "\(red),\(green),\(blue),\(alpha)"
}

将字符串转换为颜色

if (cardColor != "" ) {

 let rgbArray = cardColor.components(separatedBy: ",")
 if let red = Double (rgbArray[0]), let green = Double (rgbArray[1]), let blue = Double(rgbArray[2]), let alpha = Double (rgbArray[3]){ bgColor = Color(.sRGB, red: red, green: green, blue: blue, opacity: alpha)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接