我的应用中有一个简单的场景。
我有1次编辑UIButton
,从“图片库”中选择图像,并在UIImageView
中显示了所选图像。
@IBAction func btnEdit(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary) {
let picker:UIImagePickerController = UIImagePickerController()
picker.sourceType = .photoLibrary
picker.delegate = self
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.navigationBar.isTranslucent = false
self.present(picker, animated: true)
} else {
print("Photo Library is not available.")
}
}
UINavigationControllerDelegate和UIImagePickerControllerDelegate
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedimage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
self.imageView.image = pickedimage
} else if let pickedimage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
self.imageView.image = pickedimage
} else {
print("Something went wrong while select photo from Library...!")
}
dismiss(animated: true, completion: nil)
}
运作良好。但是所选的图像会自动保存在tmp文件夹中
我不想保存在文档目录中。
如何停止在文档目录中自动保存图像?
答案 0 :(得分:1)
文档目录和临时目录不同。当您的应用未运行时, tmp 文件夹将被清除。如有必要,可以在完成图像的使用后删除tmp文件夹的内容。 How to delete tmp folder content!
答案 1 :(得分:1)
UIImagePickerController.InfoKey是否包含imageURL键的值?
如果是这样,它是否映射到您的tmp目录中的此位置?
我对文档的理解是UIImagePickerController创建了供应用程序选择使用的图像的副本,因此您可以进行操作而不必担心会影响用户的图像库。该副本存储在tmp目录中。如果出于某种原因要清除该副本,则有责任删除该图像。
从iOS应用文件系统上的Apple文档中(添加重点):
tmp /
使用此目录写不需要的临时文件 在您的应用启动之间持续存在。 您的应用应删除文件 从不再需要它们的目录中 ;然而 当您的应用未运行时,系统可能会清除此目录。的 iTunes或iCloud不会备份此目录的内容。
假设您捕获了imageURL,将进行以下清理:
let fmTmp = FileManager.default
try! fmTmp.removeItem(at: theImageURL)