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

时间:2019-03-14 20:44:12

标签: ios swift cocoa-touch nsuserdefaults

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

 @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进行设置,该怎么做?

1 个答案:

答案 0 :(得分:1)

我没有看到其他按钮,也没有在其中更改背景颜色,但是假设您使用的是ypu颜色的HeX表示,可以将背景颜色保存在共享首选项中,并且始终使用共享状态来设置背景。

要将颜色保存到用户偏好设置 时:UserDefaults.standard.set("#FF2200", forKey: "background_color_hex")

要从首选项中检索背景色的十六进制表示 let hexBackgroundColor = UserDefaults.standard.string(forKey: “background_color_hex”) ?? “#FFFFFF”

然后使用它,您可以具有 扩展名,以根据其十六进制表示形式获得UIColor ,如在线许多文章中所述,例如,以{{3 }} 像这样: view.backgroundColor = UIColor(hex: hexBackgroundColor)

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