我已经读过项目的info.plist文件中有两个键可以自定义高度和宽度.即使我更改了这些值,我也无法将预览窗口的大小调整为所需的值.
我不知道还有什么可以尝试的.任何的想法?
谢谢!
解决方法
OSStatus (*GeneratePreviewForURL)( void *thisInterface,QLPreviewRequestRef preview,CFURLRef url,CFStringRef contentTypeUTI,CFDictionaryRef options );
在其他任何事情之前,您可以手动检查选项字典参数并验证kQLPreviewPropertyWidthKey和kQLPreviewPropertyHeightKey键确实映射到所需的CFNumber值.
参考这些属性中的每一个,Apple QuickLook编程指南说:
Note that this property is a hint; Quick Look might set the width
automatically for some types of previews. The value must be
encapsulated in a CFNumber object.
(编辑:如果你的预览表示是灵活的,你可能会尝试找到一个预览类型,QuickLook会根据上面的声明来表示你的尺寸提示.只是想一想.)
在QuickLook框架二进制文件上运行nm会显示一些未记录的kQLPreviewProperty–常量以及前面提到的宽度和高度键.引起我注意的是kQLPreviewPropertyAutoSizeKey.回顾Apple关于忽略自动设置大小的提示的声明,这可能很重要吗?遵循QuickLook.framework / Headers / QLBase.h中的约定,您可以尝试声明
extern const CFStringRef kQLPreviewPropertyAutoSizeKey;
然后,您可以尝试将CFNumber 0与选项字典中的属性键相关联.还有其他未记录的密钥,例如kQLPreviewPropertyAttributesKey.
回到你提到的Info.plist,Apple says关于那些键QLPreviewWidth和QLPreviewHeight:
This number gives Quick Look a hint for the width (in points) of
previews. It uses these values if the generator takes too long to
produce the preview. (emphasis added)
这是有人提出在您的生成器中调用sleep()的可怕建议.但我很困惑为什么Apple会根据生成器延迟来跟踪大小提示. (?)