我正在使用 Swift 3 并一直关注苹果https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html在20个不同的UIViewcontroller
上创建了20个不同的UIImage视图
它们被称为photoImageView1
photoImageView2
等。目前您可以点击每个通用图像并输入自己的图像。
我希望用户能够输入他们的图像,但也保存它,当他们重新打开相同的viewcontroller
时,他们输入的图像就在那里。
我已经看过许多不同的方法,但是我尝试过这个问题Save images in NSUserDefaults?并没有成功,而且再一次都没有成功。任何帮助将不胜感激,谢谢。
答案 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文件夹中。