使用UserDefaults保存自定义背景颜色



我创建了一个带有某些按钮的网格,每个按钮都与某个颜色关联并更改视图的背景颜色:

 @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的十六进制代表ypu可以保存背景颜色,并始终使用设置背景的共享状态。

当您要将颜色保存到用户prefs 时: UserDefaults.standard.set("#FF2200", forKey: "background_color_hex")

从prefs 中检索背景颜色的十六进制: let hexBackgroundColor = UserDefaults.standard.string(forKey: “background_color_hex”) ?? “#FFFFFF”

然后,要使用它,您可以使用一个扩展程序,以基于其十六进制代表在线上所解释的uicolor,以此为例,以此为例。/www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-hex-color-to-a-uicolor,所以: view.backgroundColor = UIColor(hex: hexBackgroundColor)

我想还有很多其他解决方案,这是最快的解决方案。

相关内容

  • 没有找到相关文章

最新更新