хранение фоновых изображений в userdefaults - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно иметь возможность установить фоновое изображение для этой кнопки.Мне нужно сохранить это, так что после закрытия приложения фоновое изображение остается прежним.

eventsFirstButton.backgroundColor = UIColor(patternImage: UIImage(named: "events")!)

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Лучше сохранить его как base64string, вы не хотите хранить большое значение в UserDefaults.

Для кодирования UIImage используйте это:

let image = UIImage()
let data = image.pngData()
let imageBase64String = data?.base64EncodedString()
UserDefaults.standard.set(imageBase64String, forKey: "encodedImage")

А для декодирования и извлечения UIImage используйте это:

if let imageBase64String = UserDefaults.standard.value(forKey: "encodedImage"),
    let url = URL(string: String(format:"data:application/octet-stream;base64,%@",imageBase64String))
{
    do
    {
        let data =  try Data(contentsOf: url) 
        let image = UIImage(data: data)
    }
    catch let error
    {
        print("Error decoding image")    
    }
}

Если вам действительно нужно сохранять изображения в формате PNG, JPEG локально, используйте CoreData для их сохранения на устройстве.

0 голосов
/ 15 ноября 2018

Вы можете просто сохранить состояние:

Правильный ответ:

UserDefaults.standard.set(true, forKey: "TestAnswer1")
//If the answer is incorrect set to false

На нагрузке:

 if UserDefaults.standard.bool(forKey: "TestAnswer1") {
      view.backgroundColor = UIColor.green
      // or any other logic
 } else {
      view.backgroundColor = UIColor.red
      // or any other logic
 } 
0 голосов
/ 15 ноября 2018

Вы можете использовать UserDefaults для сохранения изображения

Сохранить

if let image = eventsFirstButton.imageView?.image {
            let imageData = image.pngData()
            UserDefaults.standard.set(imageData, forKey: "imageData")
        }

Получить

if let imageData = UserDefaults.standard.data(forKey: "imageData") {
            print("IMG data: ", imageData)
            // your code here
        }
...