[swift] SwiftyUserDefaults와 함께하는 앱의 배경화면 설정 관리하기

앱을 개발할 때 사용자가 선호하는 설정을 저장하고 관리하는 것은 중요한 요소입니다. 이번 글에서는 SwiftyUserDefaults 라이브러리를 사용하여 iOS 앱에서 배경화면 설정을 관리하는 방법에 대해 알아보겠습니다.

SwiftyUserDefaults란 무엇인가요?

SwiftyUserDefaults는 단순한 구문을 사용하여 UserDefaults를 쉽게 관리할 수 있도록 도와주는 라이브러리입니다. UserDefaults는 간단한 사용자 설정 데이터를 저장하는 데 사용되는 iOS의 기본 저장소입니다. SwiftyUserDefaults는 이러한 UserDefaults를 더 편리하게 사용할 수 있도록 만들어줍니다.

SwiftyUserDefaults 설치하기

SwiftyUserDefaults를 사용하기 위해서는 먼저 CocoaPods를 통해 라이브러리를 설치해야 합니다. Podfile에 다음의 라인을 추가하고, pod install 명령어를 실행하여 SwiftyUserDefaults를 프로젝트에 추가합니다.

pod 'SwiftyUserDefaults'

배경화면 설정 관리하기

다음은 SwiftyUserDefaults를 사용하여 화면의 배경 이미지를 설정하고 저장하는 예제 코드입니다:

import UIKit
import SwiftyUserDefaults

class ViewController: UIViewController {
    
    @IBOutlet weak var backgroundImageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 배경화면 이미지 설정
        if let backgroundURL = Defaults[.backgroundURL] {
            let data = try? Data(contentsOf: backgroundURL)
            if let imageData = data {
                let image = UIImage(data: imageData)
                backgroundImageView.image = image
            }
        }
    }
    
    // 배경화면 변경 버튼을 눌렀을 때 호출되는 메서드
    @IBAction func changeBackgroundButtonTapped(_ sender: UIButton) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        present(imagePicker, animated: true, completion: nil)
    }
}

extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    // 이미지 선택이 완료되었을 때 호출되는 메서드
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[.originalImage] as? UIImage {
            // 선택한 이미지를 배경화면으로 설정
            backgroundImageView.image = image
            
            // 이미지를 파일로 저장하고 해당 URL을 UserDefaults에 저장
            if let imageData = image.pngData(){
                let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
                let fileURL = documentsURL?.appendingPathComponent("background.png")
                try? imageData.write(to: fileURL!)
                Defaults[.backgroundURL] = fileURL
            }
        }
        
        picker.dismiss(animated: true, completion: nil)
    }
}

extension DefaultsKeys {
    static let backgroundURL = DefaultsKey<URL?>("backgroundURL")
}

위의 코드에서는 Defaults[.backgroundURL]을 통해 배경화면 이미지의 URL을 가져오고, 해당 URL에서 이미지를 로드하여 backgroundImageView에 표시합니다. 또한, changeBackgroundButtonTapped 메서드에서 이미지 선택이 완료되면 선택한 이미지를 backgroundImageView에 설정하고, 해당 이미지를 파일로 저장한 뒤 URL을 UserDefaults에 저장합니다.

이렇게 SwiftyUserDefaults를 사용하여 앱의 배경화면 설정을 관리할 수 있습니다. 간단하게 사용자의 기본 설정을 저장하고 관리하는 데 도움이 되는 SwiftyUserDefaults는 iOS 앱 개발에서 유용한 라이브러리입니다.

참고 자료