まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

Swift UIColorをUserDefaultsで保存する。デモ

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" を使う - 文字っぽいの。

 

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