问题很简单。我想模仿默认OSX的Audio QuickLook插件的行为,我需要QuickTime播放器,它通常停留在预览窗口的底部。我也希望当我使用自定义插件时,我也能听到我正在预览的文件的声音。
以下是一些代码(来自GeneratePreviewForURL.m文件),可能有助于更好地理解上下文:
OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
@autoreleasepool {
if (QLPreviewRequestIsCancelled(preview)) return noErr;
NSMutableString *html=[[NSMutableString alloc] init];
NSDictionary *props;
NSData *imageData=[NSData dataWithContentsOfFile:@"/tmp/IMAGE.png"];
props=@{
(__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey:@"UTF-8",
(__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"text/html",
(__bridge NSString *)kQLPreviewPropertyAttachmentsKey:@{
@"IMAGE":@{
(__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"image/png",
(__bridge NSString *)kQLPreviewPropertyAttachmentDataKey: imageData,
},
},
};
[html appendString:@"<html>"];
[html appendString:@"<body>"];
[html appendString:@"<img src=\"cid:IMAGE\">"];
[html appendString:@"<br><br>"];
//...
[html appendString:@"</body>"];
[html appendString:@"</html>"];
QLPreviewRequestSetDataRepresentation(preview,(CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,(CFDictionaryRef)props);
}
return noErr;
}
答案 0 :(得分:0)
使用OSX 10.6.8上的Xcode 4.2,只需使用<audio>
标记并使用<src>
属性加载文件即可获得该结果(如果您还希望在其中播放音频)打开预览窗口你只需要将<autoplay>
属性设置为“true”)...不幸的是现在在Mavericks上使用Xcode 5.1,似乎都没有使用cid:
方案(你已经使用过)在加载.png
文件的示例代码中完成工作!
只有reporting a bug to Apple可能(可能)解决了这个问题。