LoginSignup
5
4

More than 3 years have passed since last update.

Swift5でUIColorをUserDefaultでローカル保存する方法

Posted at

 初めに

アプリの着せ替えなどの機能でユーザがアプリの背景色を選ぶなどの機能があります。
そういった時に色のローカル保存が必要になります。
UiColorなのであることをしないとUserDefaultが使えません。
今回はそのあることを紹介させていただきます。

実装

まずは保存側
以下の通りですがシリアライズ化しのちにUserDefaultを使います。

TestViewController.swift
// UIColorデータをシリアライズ化しユーザデフォルトに保存する
let SaveColor = NSKeyedArchiver.archivedData(withRootObject: UIColor.rgba(red: 97,green: 167,blue: 246,alpha: 1))
UserDefaults.standard.set(SaveColor, forKey: "SaveUIColor")
UserDefaults.standard.synchronize()

呼び出し側です。
保存先のKeyにデータが入っているか確認し、デシリアライズし使えるようにするのをやっているだけです。
背景色を変えるコードも入れています。

MainViewController.swift
if let SetColor = UserDefaults.standard.object(forKey: "SaveUIColor") as? Data {
  // UIColorのローカルデータをデシリアライズし、UIColorローカルデータをUIColorオブジェクトに代入できるようにする
  if let reloadColor = NSKeyedUnarchiver.unarchiveObject(with: SetColor) as? UIColor {
       //背景に保存した画像をセットする
       view.backgroundColor = reloadColor
   }
}

 終わりに

やっていることは簡単です。
今回のあることとはシリアライズのことでしたね。
引っ張ってすいません。
シリアライズについては位置情報取得するときとかによく出てくる単語なので説明は割愛させていただきます。
ここまでご視聴いただきありがとうございました。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4