Nik*_*kis 14 macos cocoa quicklook
我正在寻找一种方式(公共或其他方式)来获取NSView,NSImage,CGImageRef等,以显示文件的QuickLook预览.基本上相当于QLThumbnailImageCreate()但是用于预览.
我能找到的公共API不支持这一点.它们允许创建缩略图或QLPreviewPanel.事实上,该面板确实显示了快速预览,但我无法访问预览的外观以将其嵌入到其他视图中,也无法一次显示多个预览.
作为背景,我正在编写一个应用程序,用户可以在其中嵌入应该以内联方式显示的其他文件的链接,有点像HTML中的<img>标记.对于像JPG和PDF这样的图像,很容易弄清楚要显示的内容.我认为对于其他格式,我会使用"快速查看"来生成文件内容的良好直观表示.这样,我的应用程序支持的格式集很容易扩展(只需下载新的Quick Look生成器).
我曾经广泛地研究过这种情况,并且无法找到一种简单的方法.根据文件类型,QuickLook会生成不同类型的输出.例如,对于iWork文件,生成器生成在WebView中显示的HTML.对于其他类型,它返回不同类型的数据.
我从来没有最终使用过代码,但是这里有一些我挖出的代码和一些可能很方便的私有API:
id QLPreviewCreate(CFAllocatorRef allocator, CFURLRef url, CFDictionaryRef options);
id QLPreviewCopyBitmapImage(id preview);
id QLPreviewCopyData(id preview);
NSString* QLPreviewGetPreviewType(id preview);
id QLPreviewCopyProperties(id preview);
- (NSData *)getDataForFile:(NSString *)path
{
NSURL *fileURL = [NSURL fileURLWithPath:path];
id preview = QLPreviewCreate(kCFAllocatorDefault, fileURL, 0);
if (preview)
{
NSString* previewType = QLPreviewGetPreviewType(preview);
if ([previewType isEqualToString:@"public.webcontent"])
{
// this preview is HTML data
return QLPreviewCopyData(preview);
}
else
{
NSLog(@"this type is: %@", previewType);
// do something else
}
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4953 次 |
| 最近记录: |