Swift UIColorをUserDefaultsで保存する。
UIColorPickerを使用してちゃんと保存できているか確認します。UIColorPickerはiOS14以前では動作しません。
以下少しみづらいかもですが
UIColorPickerViewControllerDelegateを継承することを忘れずに
class ViewController: UIViewController ,UIColorPickerViewControllerDelegate{
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let data = UserDefaults.standard.data(forKey: "SaveColor"){
let unarchivedObject = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? UIColor
view.backgroundColor = unarchivedObject
}
}
StoryBoardにボタン配置してアクションをつけてください
@IBAction func bA(_ sender: Any) {
if #available(iOS 14.0, *) {
colorPickerShow()
}
}
@available(iOS 14.0, *)
func colorPickerShow(){
let picker = UIColorPickerViewController()
picker.delegate = self
picker.selectedColor = .black //ピッカーを表示した時に最初に選択されている色を指定
self.present(picker, animated: true, completion: nil)
}
@available(iOS 14.0, *)
func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
print("カラーピック")
let selectedColor = viewController.selectedColor
print("selectedColor",selectedColor)
view.backgroundColor = selectedColor
// ArchiveしてUserDefaultにセット
let SaveColor = try! NSKeyedArchiver.archivedData(withRootObject: selectedColor, requiringSecureCoding: false)
UserDefaults.standard.set(SaveColor, forKey: "SaveColor")
}
ボタンを押してピッカーを起動させて適当な色を選択したら背景の色が変わると思います。
そうしたらアプリを一回終了させてもう一度起動させて、色が保存できるか確認しましょう。
背景の色がさっき選択していた色になっていたらOKです。
こちらの記事を参考にさせていただきました。
iOS 12以降のAPIで "NSKeyedArchiver" と "NSKeyedUnarchiver" を使う - 文字っぽいの。