如何使用Swift保存背景色



我想在关闭应用程序并重新启动时保存背景颜色。我只是不知道怎么做。

我是这样写的:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if self.view.backgroundColor == .blue{
self.view.backgroundColor = .red

} else if self.view.backgroundColor == .red {
self.view.backgroundColor = .blue

}
}

我只是不知道加载视图时如何保存它。

在这种特殊情况下,用didSet属性观测器声明一个Bool属性,并将该Bool值保存到UserDefaults。该值只有在更改时才会保存。

var backgroundColorIsBlue = false {
didSet {
self.view.backgroundColor = backgroundColorIsBlue ? .blue : .red
if backgroundColorIsBlue != oldValue { UserDefaults.standard.set(backgroundColorIsBlue, forKey: "backgroundColor") }
}
}

viewDidLoad中加载值

func viewDidLoad() {
super.viewDidLoad()
backgroundColorIsBlue = UserDefaults.standard.bool(forKey: "backgroundColor")
}

touchesBegan中,只需切换backgroundColorIsBlue

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
backgroundColorIsBlue.toggle()
}
// MARK: - UIColor
extension UIColor {
convenience init(red: Int, green: Int, blue: Int) {
precondition(red >= 0 && red <= 255)
precondition(green >= 0 && green <= 255)
precondition(blue >= 0 && blue <= 255)
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
}
convenience init(rgb: Int) {
self.init(
red: (rgb >> 16) & 0xFF,
green: (rgb >> 8) & 0xFF,
blue: rgb & 0xFF
)
}

let myColorKey = "myColorKey"
let myColorForSaveAsHex = 0xFFff12
self.view.backgroundColor = UIColor(rgb: myColorForSaveAsHex)
// For save color
UserDefaults.standard.set(myColorForSaveAsHex, forKey: myColorKey)
// For load color
if let myLoadedColor = UserDefaults.standard.value(forKey: myColorKey) as? Int {
self.view.backgroundColor = UIColor(rgb: myLoadedColor)
}

我想你可以这么做!

let myColor = UIColor.red
UserDefaults.standard.set(myColor, forKey: "MyKey")
if let loadedColor = UserDefaults.standard.value(forKey: "MyKey") as? UIColor {
// loadedColor
}

最新更新