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字典参数并验证kQLPreviewPropertyWidthKey和kQLPreviewPropertyHeightKey键确实映射到所需的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 提示必须以点(而不是像素)表示,单位取决于用户的屏幕分辨率。