代码之家  ›  专栏  ›  技术社区  ›  AntiVIRUZ

UIActivityViewController无法共享图像

  •  1
  • AntiVIRUZ  · 技术社区  · 6 年前

    我以这种方式分享图像

    if let image = viewModels[indexPath.row].image, let viewController = viewController {
        let objectsToShare = [image]
        let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
        viewController.present(activityVC, animated: true, completion: nil)
    }
    

    在我的设备上,它工作正常。但在另一台设备上,我看到了下一个行为:

    1) 图像正确显示在屏幕上

    2) 活动控制器出现

    3) 当用户尝试将图像共享到应用程序(例如telegram或whatsapp)时,活动控制器会显示人员列表,但当用户选择共享目标时,控制器会冻结一秒钟,然后消失(图像尚未发送到目标)

    4) 将图像保存到照片效果良好。

    这是什么?例如,内部IOS错误,或者UIImage实例出现问题?两台设备上的IOS 11.4版

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nike Kov    5 年前

    当我试图共享空文本文件时,我也有同样的行为。在只过滤非空文本后,我开始启用发送到telegram和whatsapp。似乎,当您尝试共享长度为0字节的内容时,会引发错误。请检查你的照片。

        2
  •  0
  •   user2821937    4 年前

    将图像共享到messenger或聊天工具时,请尝试以下代码

    这对我有用

    func share(withUiImage uiImage : UIImage?){
    
        if let safeImage: UIImage = uiImage,let imagePngData = safeImage.pngData() {
    
            let activityViewController  = UIActivityViewController(activityItems: ["Share Image",imagePngData], applicationActivities: nil)
    
            if let popoverController = activityViewController.popoverPresentationController {
                popoverController.sourceView = self.view
                popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.maxY, width: 0, height: 0)
                popoverController.permittedArrowDirections = []
            }
    
    
            self.present(activityViewController, animated: true, completion: nil)
    
    
        }
    }