iOS自定义共享扩展:加载选定的图像

3

我正在为我的应用程序制作共享扩展,以便可以直接从库中分享图像。我已经设置了视图控制器和布局,但是我无法让所选的图像显示在视图控制器内的UIImageView中。

目前,我的getImage()如下:

func getImage() {
    if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
        if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
            itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
                if let item = imageData as? Data {
                    self.imageView.image = UIImage(data: item)

                }
            }
        }
    }
}

...但图片无法加载。我在这里做错了什么?

1个回答

5

找到问题所在。原来我首先需要进行类型标识符一致性检查:

func getImage() {
    if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
        if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
            // This line was missing
            if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeJPEG as String) { 
                itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
                    if let item = imageData as? Data {
                        self.imageView.image = UIImage(data: item)
                    }
                }
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接