如何在Swift中防止UIImagePickerController自动保存图像?

3

我在我的应用程序中有一个简单的场景。

我有一个编辑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文件夹中。

我不想保存在文档目录中。

enter image description here

如何停止自动保存图片到文档目录中?

2个回答

1
UIImagePickerController.InfoKey是否包含imageURL键的值?如果是,它是否映射到tmp目录中的此位置?
我的理解是UIImagePickerController创建所选图像的副本供您的应用程序使用,因此您可以操纵它而不必担心影响用户的图像库。该副本存储在tmp目录中。如果您想出于某种原因清除该副本,则需要删除该图像。
根据iOS应用程序文件系统的苹果文档(强调添加):
tmp/ 使用此目录编写不需要在应用程序启动之间保留的临时文件。但是,当不再需要文件时,您的应用程序应从此目录中删除文件;但是,当您的应用程序未运行时,系统可能会清除此目录。此目录的内容不受iTunes或iCloud备份。

https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW4

这个清理,假设你捕获了图片的URL,将会是这样:
let fmTmp = FileManager.default
try! fmTmp.removeItem(at: theImageURL)

在imagePickerController函数中,您如何访问InfoKey? - Chewie The Chorkie

0

文档目录和临时目录不同。当您的应用程序未运行时,tmp文件夹将被清除。如果需要,您可以在使用图像完成后删除tmp文件夹的内容。 如何删除tmp文件夹内容


1
不,当应用在前台/未运行/被杀死时,tmp文件夹不会被清除。即使重启设备,所有图像和tmp文件夹仍然存在。删除tmp文件是唯一的选择。但是如何停止自动保存? - Jay Patel
我认为没有任何选项可以停止在tmp文件夹中的自动保存。根据苹果文档,它应该被清理,可能是在低内存情况下清理的。 - S.M.Moinuddin. Shuvo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接