gpt4 book ai didi

swift - 为什么当我点击 UIActivityViewController 上的 "Save Image"选项时我的应用程序崩溃了?

转载 作者:行者123 更新时间:2023-11-28 14:05:51 25 4
gpt4 key购买 nike

因此,在 3D Touch peek Controller 中,我在设置 UIPreviewAction 的地方有这个计算变量:

override lazy var previewActionItems: [UIPreviewActionItem] = {

let save = UIPreviewAction.init(title: "Share Image", style: UIPreviewAction.Style.default, handler: { (action, controller) in
let renderer = UIGraphicsImageRenderer(size: self.view.bounds.size)
let imageAux = renderer.image { ctx in
self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: true)
}
self.delegate!.shareImage(image: imageAux, url: self.data.url)
})

return [save]
}()

在委托(delegate) Controller 中,我有这个方法来呈现 UIActivityViewController:

func shareImage(image: UIImage, url: String) {

if let data = image.pngData() {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let filename = paths[0].appendingPathComponent(url)
try? data.write(to: filename)
}

let activityViewController = UIActivityViewController(activityItems: [image] , applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
}

一切正常,我可以与任何应用程序共享,并且可以使用文件浏览器进行存储,但如果我按“保存图像”,应用程序就会崩溃。看起来我需要画廊许可,但我不知道如何在 UIPreviewAction 中实现它来检查我是否有权限,所以如果我这样做它会保存,如果我不这样做它会请求许可。

最佳答案

在新的 InfoPlist.strings 文件中添加新记录。

<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME)</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME)</string>

从模拟器中删除您的应用并再次运行。

关于swift - 为什么当我点击 UIActivityViewController 上的 "Save Image"选项时我的应用程序崩溃了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com