共享扩展:在自定义视图控制器中抓取缩略图,如SLComposeServiceViewController

时间:2014-10-21 19:08:27

标签: swift ios8-share-extension

我试图从网站上抓取缩略图,以便将其粘贴到我的自定义UIViewController上以进行共享扩展。我知道SLComposeServiceViewController是免费的,但我必须制作一个自定义的视图控制器。 有没有办法用现有的API做到这一点?

感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用此代码,从文件网址获取缩略图:

NSURL *path = self.url; 
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:(NSString *)kQLThumbnailOptionIconModeKey];
CGImageRef ref = QLThumbnailImageCreate(kCFAllocatorDefault, (__bridge CFURLRef)path, CGSizeMake(600, 800 /* Or whatever size you want */), (__bridge CFDictionaryRef)options);
NSImage *thunbnail = [[NSImage alloc]initWithCGImage:ref size:NSZeroSize];

答案 1 :(得分:0)

我也在定制SLComposeServiceViewController时达到了极限,并且必须创建自己的预览。 基本方法是这样的:

for (NSExtensionItem *item in self.extensionContext.inputItems)
{
    for (NSItemProvider *itemProvider in item.attachments)
    {
        //kUTTypeVCard, kUTTypeURL, kUTTypeImage, kUTTypeQuickTimeMovie
        NSString *typeIdentifier = (__bridge NSString *)kUTTypeImage;

        if ([itemProvider hasItemConformingToTypeIdentifier:typeIdentifier])
        {
            [itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error)
             {
                 if (image)
                 {
                     //Use image
                 }
             }];
        }
    }
}

请注意

- (void)loadPreviewImageWithOptions:(NSDictionary *)options completionHandler:(NSItemProviderCompletionHandler)completionHandler
  

通过调用提供的预览块或回退到基于QuickLook的处理程序来加载此项目的预览图像。此方法与loadItemForTypeIdentifier:options:completionHandler:一样,支持完成块的item参数的隐式类型强制。允许的值类是:NSData,NSURL,UIImage / NSImage。