这个问题在这里已有答案:
我创建了一个带有一些按钮的网格,每个按钮都与某种颜色相关联,并改变了视图的背景颜色:
@IBOutlet weak var backgroundSelectionView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
backgroundSelectionView.isHidden = true
backgroundSelectionView.isUserInteractionEnabled = false
backgroundGrid()
}
@IBAction func backgroundColor(_ sender: Any) {
if backgroundSelectionView.isHidden == true {
backgroundSelectionView.isHidden = false
backgroundSelectionView.isUserInteractionEnabled = true
} else {
backgroundSelectionView.isHidden = true
backgroundSelectionView.isUserInteractionEnabled = false
}
}
func backgroundGrid(){
blackButtonOutlet.layer.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
blackButtonOutlet.layer.borderWidth = 1
blackButtonOutlet.layer.borderColor = UIColor.black.cgColor
}
@IBOutlet weak var blackButtonOutlet: UIButton!
@IBAction func blackButton(_ sender: Any) {
view.layer.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
}
现在它工作正常,如果我按下按钮它设置背景,一切看起来不错。唯一的问题是,当我在应用程序中导航或离开时,背景会再次变为白色(默认)。我想用userDefaults设置它,我该怎么办?
我没有看到其他按钮以及您更改背景颜色的位置但我们假设您正在使用颜色ypu的HeX represantation可以在共享首选项中保存背景颜色并始终使用共享状态来设置背景。
如果要将颜色保存到用户首选项:UserDefaults.standard.set("#FF2200", forKey: "background_color_hex")
要从prefs:qazxsw poi检索背景颜色的HEX表示。
然后使用它你可以有一个扩展,以获得基于其十六进制represantation的UIColor,如在网上的许多文章中解释,例如这一个let hexBackgroundColor = UserDefaults.standard.string(forKey: “background_color_hex”) ?? “#FFFFFF”
像这样:https://www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-hex-color-to-a-uicolor
我想可以有很多其他的解决方案,这是我想到的最快的解决方案。