将背景图像存储在userdefaults中

时间:2018-11-15 17:34:24

标签: ios swift userdefaults

我需要能够设置此按钮的背景图像。我需要存储它,以便在应用关闭后,背景图像是相同的。

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

3 个答案:

答案 0 :(得分:1)

您可以保存状态:

正确答案:

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
 } 

答案 1 :(得分:-2)

最好将其另存为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将它们存储在设备上。

答案 2 :(得分:-3)

您可以使用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
        }