swift - 如何让用户拍照并分享?
问题描述
我正在使用 Xcode 10,swift 5。我有一个 tableViewController,允许用户点击、左右滑动。当向右滑动时,它会显示一个显示完成的前导按钮。当用户点击按钮时,会出现一个共享对话框并允许他们共享工作。我正在努力实现一个 UIPickerController,它允许用户为他们的项目拍照并将其嵌入到共享对话框中。
override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let complete = UIContextualAction.init(style: .normal, title: "Complete") { (action, view, completion) in
let completedTxt = "Look at what I fixed, thanks to @DIY Home Repair!"
let vc = UIImagePickerController()
vc.sourceType = .camera
vc.allowsEditing = false
vc.delegate = self
self.present(vc, animated: true)
let activityController = UIActivityViewController(activityItems: [completedTxt, ], applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)
completion(true) // Completion
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: true)
guard let image = info[.originalImage] as? UIImage else {
print("No image found")
return
}
// print out the image size as a test
print(image.size)
}
}
该代码显示了相机并允许用户拍照,但图片无法到达任何位置,共享对话框也不会出现。当我删除 UIPickerController 的代码时,共享对话框会显示预填充的文本。
解决方案
这是因为当你展示一个控制器时,已经有一个 UI 任务在运行,因此你不能一次展示 2 个控制器。
根据您的问题,您应该使用UIActivityViewController
该didFinishPickingMediaWithInfo
方法,以便您可以将图像添加到共享表中。
推荐阅读
- sql - DATE_PART 和 Postgresql
- c# - 如何隐藏/删除 rdlc 报告中的空白单元格
- angularjs - RouterLink 中的 QueryParams 不起作用
- python - 使用 python 查询数据库的最佳实践
- amazon-web-services - 是否可以在 Cloud Formation 脚本中更改 RDS 实例的逻辑 ID?
- python-3.x - 如何在 OpenCV 中为拼接多个图像腾出空间 - Python3
- c++ - 为什么 cuda 设备计数为零?
- sql-server - AWS:降级单个 EC2 实例的 Sql 许可证
- angular - 订阅()返回未定义
- angular - Angular 4 使用 ng-container 隐藏/显示