如何在View Controller上保存和调用UIImage?

时间:2016-10-25 10:19:02

标签: ios swift uiimageview swift3

我正在使用 Swift 3 并一直关注苹果https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html在20个不同的UIViewcontroller上创建了20个不同的UIImage视图

它们被称为photoImageView1 photoImageView2等。目前您可以点击每个通用图像并输入自己的图像。

我希望用户能够输入他们的图像,但也保存它,当他们重新打开相同的viewcontroller时,他们输入的图像就在那里。

我已经看过许多不同的方法,但是我尝试过这个问题Save images in NSUserDefaults?并没有成功,而且再一次都没有成功。任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

我最终使用这种方法可能不是最好的,但它很容易并且有效。

pg_database

}

import UIKit


class timetable: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

@IBOutlet var imageviewtimetable: UIImageView!

@IBAction func saveMyImage(_ sender: UIBarButtonItem) {

    let myTimeTableImage = imageviewtimetable.image
    let theImageData:NSData = UIImagePNGRepresentation(myTimeTableImage!)! as NSData

    UserDefaults.standard.set(theImageData, forKey: "mySavedImage")

    let data = UserDefaults.standard.object(forKey: "mySavedImage")
    imageviewtimetable.image = UIImage(data: data as! Data)



}




   override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.



    let data = UserDefaults.standard.object(forKey: "mySavedImage")
    imageviewtimetable.image = UIImage(data: data as! Data)

}

答案 1 :(得分:0)

您可以将图像名称存储在数据库,iCloud,plist甚至Userdefaults中。要将图像保存到磁盘而不是照片库,请使用:

    import PlaygroundSupport
    import UIKit

    func save(image: UIImage, name: String) -> Bool {
        guard var path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first,
            let imageData = UIImagePNGRepresentation(image) else {
                return false
        }
        path = path.appendingPathComponent(name)
        do {
            try imageData.write(to: path)
        } catch {
            return false
        }
        return true
    }

    func loadImage(name: String) -> UIImage? {
        guard var path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
            return nil
        }
        path = path.appendingPathComponent(name)
        return UIImage(contentsOfFile: path.relativePath)
    }

    let image = UIImage(named: "test.png")!
    save(image: image, name: "test2.png")
    let loadedImage = loadImage(name: "test2.png")
    PlaygroundPage.current.liveView = UIImageView(image: loadedImage)
编辑:我将源代码更改为完整的游乐场,以便您可以将其复制并粘贴到游乐场并运行它。您唯一需要做的就是将名为test.png的文件拖到Resources文件夹中。