我正在编写iOS应用分享扩展程序,我想获得一个大型预览图像。经过一番努力,我能够使这段代码工作:
class ShareViewController: SLComposeServiceViewController {
// This is the result handler for the call to loadPreviewImageWithOptions
let imageHandler: NSItemProviderCompletionHandler = { [unowned self]
(result: NSSecureCoding?, error: NSError!) in
if result is UIImage
{
let image = result as! UIImage
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.imageView.image = image
self.imageView.contentMode = UIViewContentMode.ScaleAspectFill
self.imageView.clipsToBounds = true
})
}
}
// Find the shared item and preview it.
for item: AnyObject in self.extensionContext!.inputItems
{
let inputItem = item as! NSExtensionItem
for provider: AnyObject in inputItem.attachments!
{
let provider = provider as! NSItemProvider
// I want a preview image as large as the device.
var options_dict = [NSObject:AnyObject]()
options_dict[NSItemProviderPreferredImageSizeKey] = NSValue(CGSize: CGSize(width: 960, height:540))
provider.loadPreviewImageWithOptions(options_dict, completionHandler: imageHandler)
}
}
...
}
我获得了一张图片,但其尺寸始终为84 x 79像素。从NSItemProvider documentation选项字典应该支持预览图像大小:
options - 键和值的字典,提供有关项目的信息,例如图像的大小。有关可能的键列表,请参阅选项词典键。
在同一页面上的选项Dictonary Key下:
NSItemProviderPreferredImageSizeKey - 用于指定图像尺寸的键(以像素为单位)。此键的值是包含CGSize或NSSize数据类型的NSValue对象。
有一条线索:
键被用于传递给NSItemProviderLoadHandler块的options参数的字典中。
所以也许我必须使用size选项调用或覆盖loadItemForTypeIdentifier,然后调用loadPreviewImageWithOptions?我现在正在尝试这个。