gpt4 book ai didi

Swift Swiftui - 将颜色保存到 UserDefaults 并从@AppStorage 使用它

转载 作者:行者123 更新时间:2023-12-05 09:01:26 27 4
gpt4 key购买 nike

在我的 MacOS 和 iOS 应用程序中,我使用从这里创建的颜色:https://uiwjs.github.io/ui-color/然后 f.e.工作正常。

Color(red: 1.47, green: 1.9, blue: 2.3).opacity(1)

但是对于某些颜色,我希望它们保存在 userDefaults 中并通过 UserDefaults.standard 方法读/写,并通过@AppStorage 读/写。

我确实尝试使用,但这给了我运行时错误。

static let infoListRowReadBGColor = Color(red: 2.55, green: 1.71, blue: 1.07).opacity(1)
static let infoListRowUnReadBGColor = Color(red: 2.55, green: 2.12, blue: 1.38).opacity(1)

var defaults = UserDefaults.standard

defaults.setValue(InAppDefaults.infoListRowReadBGColor, forKey: "infoListRowReadBGColor")
defaults.setValue(InAppDefaults.infoListRowUnReadBGColor, forKey: "infoListRowUnReadBGColor")

使用 UserDefaults.default 和 @AppStore,我需要更改什么才能使其正常工作、读写?我确实从这里的帖子中尝试了扩展方法,但我想我做错了,因为它不适用于@AppStorage。

将 XCode 13 和 14 用于 MacOS 12 和 iOS 15 的开发结果。

最佳答案

您可以尝试将颜色转换为数据并存储数据。

这是一个扩展 UIColor 的 uikit 版本,您也可以将它用于 SwiftUI 的颜色

import UIKit

extension UIColor {
class func color(data: Data) -> UIColor {
try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! UIColor
}

func encode() -> Data {
try! NSKeyedArchiver.archivedData(withRootObject: self, requiringSecureCoding: false)
}
}

您可以使用编码函数保留颜色,一旦检索到数据,您可以将其传递给类函数以获取颜色

关于Swift Swiftui - 将颜色保存到 UserDefaults 并从@AppStorage 使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73184367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com