Ios 如何在Xcode中使用用户默认值在视图控制器中保存图像?
在我的程序中,用户在第一视图控制器中随机选择一个图像,然后将所选图像发送到第二视图控制器。现在,我的问题是如何保存发送到第二视图控制器的图像(如果用户在第一视图控制器中选择另一个图像,保存的图像将被刷新),以便即使我转到另一个视图控制器,我也可以使用它?这是我的第一视图控制器的代码,以及我如何将所选图像发送到第二视图控制器:-Ios 如何在Xcode中使用用户默认值在视图控制器中保存图像?,ios,swift,Ios,Swift,在我的程序中,用户在第一视图控制器中随机选择一个图像,然后将所选图像发送到第二视图控制器。现在,我的问题是如何保存发送到第二视图控制器的图像(如果用户在第一视图控制器中选择另一个图像,保存的图像将被刷新),以便即使我转到另一个视图控制器,我也可以使用它?这是我的第一视图控制器的代码,以及我如何将所选图像发送到第二视图控制器:- var image1: UIImage! @IBAction func Button1(_ sender: UIButton) { imag
var image1: UIImage!
@IBAction func Button1(_ sender: UIButton) {
image1 = UIImage(named: "image")
}
@IBAction func Button2(_ sender: UIButton) {
image1 = UIImage(named: "image")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is 2ndViewController {
let vc2 = segue.destination as! 2ndViewController
vc2.image2 = image1
}
}
您不能在UserDefault中保存图像。这样您就可以在userDefaults中存储图像名称 并使用以下方法保存和检索图像 保存图像
func saveImage(image: UIImage) -> Bool {
guard let data = UIImageJPEGRepresentation(image, 1) ?? UIImagePNGRepresentation(image) else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
检索图像
func saveImage(image: UIImage) -> Bool {
guard let data = UIImageJPEGRepresentation(image, 1) ?? UIImagePNGRepresentation(image) else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
您不能在UserDefault中保存图像。这样您就可以在userDefaults中存储图像名称 并使用以下方法保存和检索图像 保存图像
func saveImage(image: UIImage) -> Bool {
guard let data = UIImageJPEGRepresentation(image, 1) ?? UIImagePNGRepresentation(image) else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
检索图像
func saveImage(image: UIImage) -> Bool {
guard let data = UIImageJPEGRepresentation(image, 1) ?? UIImagePNGRepresentation(image) else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
您必须使用文件系统,并且您可以将图像的名称存储在用户默认设置中。@Yodagama您能给我举个例子说明如何做到这一点吗?非常感谢!我对我的答案进行了一点编辑。。(在那里添加了一些解释)你必须使用文件系统,你可以将图像的名称存储在用户默认值中。@Yodagama你能给我一个如何做到这一点的例子吗?非常感谢!我编辑了一下我的答案…(在那里添加了一些解释)谢谢你的答案!我理解saveImage函数,输入参数就是我们需要保存的图像。但是,在getSavedImage函数中,在检索保存的图像时,输入参数应该是什么?谢谢啊,我明白了,getSavedImage函数中的输入参数是文件目录名!谢谢你的帮助!谢谢你的回答!我理解saveImage函数,输入参数就是我们需要保存的图像。但是,在getSavedImage函数中,在检索保存的图像时,输入参数应该是什么?谢谢啊,我明白了,getSavedImage函数中的输入参数是文件目录名!谢谢你的帮助!