objective-c – 设置QuickLook插件的窗口大小

我正在构建一个QuickLook插件.我想改变当用户点击空格键时弹出的窗口的宽度.

我已经读过项目的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会根据生成器延迟来跟踪大小提示. (?)

编辑:还要注意上面的语句说Info.plist提示必须以点(而不是像素)表示,unit取决于用户的屏幕分辨率.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...