设置QuickLook插件的窗口大小

And*_*res 7 cocoa objective-c quicklook

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

我已经读过项目的info.plist文件中有两个键可以自定义高度和宽度.即使我更改了这些值,我也无法将预览窗口的大小调整为所需的值.

我不知道还有什么可以尝试的.任何的想法?

谢谢!

小智 5

以为我会对此有所了解。我没有尝试过以下任何建议,所以没有人抱有希望。我假设您正在使用生成器回调:

OSStatus (*GeneratePreviewForURL)(
    void *thisInterface,
    QLPreviewRequestRef preview,
    CFURLRef url,
    CFStringRef contentTypeUTI,
    CFDictionaryRef options
);
Run Code Online (Sandbox Code Playgroud)

首先,您可以手动检查options字典参数并验证kQLPreviewPropertyWidthKeykQLPreviewPropertyHeightKey键确实映射到所需的CFNumber值。

提到这些属性中的每一个,Apple QuickLook 编程指南说:

请注意,此属性是一个提示;快速查看可能会为某些类型的预览自动设置宽度。该值必须封装在一个 CFNumber 对象中。

编辑:如果您的预览表示是灵活的,您可以尝试查找 QuickLook 尊重您的尺寸提示的预览类型,根据上面的声明。只是一个想法。)

nm在 QuickLook 框架二进制文件上运行揭示了一些未记录的kQLPreviewProperty--常量以及前面提到的宽度和高度键。引起我注意的是kQLPreviewPropertyAutoSizeKey。回想一下 Apple 关于忽略自动设置大小的提示的声明,这可能很重要吗?按照 中的约定QuickLook.framework/Headers/QLBase.h,您可以尝试声明

extern const CFStringRef kQLPreviewPropertyAutoSizeKey;
Run Code Online (Sandbox Code Playgroud)

然后,您可以尝试将 CFNumber 0 与options字典中的该属性键相关联。还有其他未记录的注意事项,例如kQLPreviewPropertyAttributesKey.

回到您提到的 Info.plist,Apple谈到了这些键,QLPreviewWidth并且QLPreviewHeight

该数字为快速查看提供了预览宽度(以磅为单位)的提示。如果生成器生成预览所需的时间过长,则使用这些值。(强调)

这就是有人提出在您的生成器中调用 sleep() 的可怕建议的地方。但是我很困惑为什么Apple 会根据生成器延迟来遵循大小提示。(?)

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