ios - UIActivityViewController 不共享图像

标签 ios swift optimization uiimage uiactivityviewcontroller

以下代码旨在根据所选的不同平台共享不同的文本和不同的图像(UIImageNSData)。问题是没有图像从 activityImageShare() 传递到 UIActivityViewController

问题:

What’s could be wrong here exactly?

How can I correct the code below to ensure that activityImageShare() shares the images, and ensure they are picked up as an activityType by UIActivityViewController?

代码:

1 - 四张图片,三张 UIImage 和一张 NSData

var myImage1: UIImage! 
var myImage2: UIImage!
var myImage3: NSData!
var myImage4: UIImage!

2 - 根据选择的平台定义图像以传递给 UIActivityViewController

class activityImageShare: NSObject, UIActivityItemSource {
    @objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
        return ""
    }
    @objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
        switch activityType {
        case UIActivityTypePostToFacebook:
            return myImage1
        case UIActivityTypePostToTwitter:
            return myImage2
        case UIActivityTypePostToWeibo:
            return myImage3
        default:
            return myImage4
        }
    }
}

3 - 根据选择的平台定义文本以传递给 UIActivityViewController

class activityTextShare: NSObject, UIActivityItemSource {
    @objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
        return ""
    }
    @objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
        switch activityType {
        case UIActivityTypePostToFacebook:
            return "This is my text 1."
        case UIActivityTypePostToTwitter:
            return "This is my text 2."
        case UIActivityTypePostToWeibo:
            return "This is my text 3."
        default:
            return "This is my text 4."
        }
    }
}

4 - 根据 activityTextShare()activityImageShare() 中定义的文本和图像呈现 UIActivityViewController

func myShareActivity() {
    let activity = UIActivityViewController(activityItems: [activityTextShare(), activityImageShare()], applicationActivities: nil)
    self.presentViewController(activity, animated: true, completion: nil)
}

最佳答案

尝试在 activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) 中返回占位符图像而不是 ""

关于ios - UIActivityViewController 不共享图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198378/

相关文章:

ios - 如果应用程序在 10 秒内被杀死,NSUserDefaults 会丢失新保存的数据

ios - 单击 UICollectionView 单元格中的 WKWebView 会导致未调用回调

python - 使用函数的单例实现

javascript - TypedArray 集合与展开循环 (Javascript)

ios - 如何在 mapbox map 中使用动画移动注释?

ios - 通过电子邮件进行临时分发

ios - 如何将 View 保存为图像

ios - swift 3 录制视频但不录制音频

swift - Cocoapods ReactiveKit swift编译器错误

c# - 优化循环