如何使用 UIActivityViewController 将 UIImage 共享到相机胶卷
Posted
技术标签:
【中文标题】如何使用 UIActivityViewController 将 UIImage 共享到相机胶卷【英文标题】:How to share UIImage to Camera Roll using UIActivityViewController 【发布时间】:2019-08-15 18:40:54 【问题描述】:我写这段代码是为了分享 UIImage
guard let codeImage = imgQRCode.image else
return
phphotoLibrary.requestAuthorization(status in
if status == .authorized
let ac = UIActivityViewController(activityItems: [codeImage], applicationActivities: nil)
self.present(ac, animated: true, completion: nil)
else
self.showOkAlert(messageTitle: "Access not granted", messageText: "Code image not saved.", okText: "OK", )
)
已授予对照片库的访问权限,但应用程序崩溃并在日志中显示此报告:
2019-08-15 20:25:01.395163+0200 ContactQR[1689:281884] [Animation] +[UIView setAnimationsEnabled:] 从后台线程调用。不支持从后台线程对 UIView 或子类执行任何操作,这可能会导致意外和隐蔽行为。
代码有什么问题?
【问题讨论】:
【参考方案1】:来自PHPhotoLibrary requestAuthorization
的文档:
照片可能会在任意串行队列上调用您的处理程序块。如果您的处理程序需要与用户界面元素交互,请将此类工作分派到主队列。
所以需要添加DispatchQueue.main.async
的使用:
PHPhotoLibrary.requestAuthorization(status in
DispatchQueue.main.async
if status == .authorized
let ac = UIActivityViewController(activityItems: [codeImage], applicationActivities: nil)
self.present(ac, animated: true, completion: nil)
else
self.showOkAlert(messageTitle: "Access not granted", messageText: "Code image not saved.", okText: "OK", )
)
【讨论】:
如果您无法自行解决问题,您应该发布一个针对您的新问题的新问题,并附上所有相关详细信息。以上是关于如何使用 UIActivityViewController 将 UIImage 共享到相机胶卷的主要内容,如果未能解决你的问题,请参考以下文章
我在作为 UIDocumentInteractionController 和 UIActivityViewController 的一部分的 UIActivityGroupViewController