在Mac OS X中以编程方式快速预览图像。

13

我正在使用Xcode为Mac OS X开发一个应用程序,我想要实现一个按钮,可以在Quicklook模式下打开图片(就像在Finder中选择一张图片然后按<空格>键一样)。

我希望这能像Skype for Mac一样工作,当你单击聊天期间下载的文件旁边的小圆形“眼睛”图标时。

有什么建议可以实现这个功能吗?


谷歌搜索引擎将我带到了苹果的指南,告诉我如何准确地完成这个任务 - https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/Quicklook_Programming_Guide/Introduction/Introduction.html - Justin Meiners
2
嗨,Justin。我自己看到了那份文件,但似乎没有回答我的问题。整个文档似乎都是关于实现快速查看生成器的。对于所有常见的图像类型,已经有了生成器。我想做的不是实现一个生成器,而是从我的应用程序内部调用快速查看生成器,而不是通过Finder。 - bgh
它描述了如何从文件生成预览图像,然后将其放置在您自己的视图中。对吗?也许我漏掉了什么。 - Justin Meiners
我不想将预览图放在我的视图中。我希望预览显示在标准的Quicklook窗口中。它应该像通过Skype点击眼睛图标快速查看文件时一样工作。 - bgh
1个回答

28

在重新审视这个问题后,我最终找到了一个资源,引导我朝着解决问题的正确方向前进。

苹果的快速查看编程指南似乎非常专注于生成器的实现,而这并不是我感兴趣的。这份文档似乎没有一个解释如何从你的应用程序中显示快速查看预览的部分。然而,我找到了一个演示项目(QuickLookDownloader),非常清楚地说明了如何做到这一点。

你基本上使用应用程序的共享QLPreviewPanel对象。通过调用它的makeKeyAndOrderFront:方法将QLPreviewPanel设置为关键窗口。然后,通过QLPreviewPanelController协议的方法接受(和释放)QLPreviewPanel。当QLPreviewPanel变成关键时,这些方法将在响应者链上第一个响应它的对象上调用。你还必须实现QLPreviewPanelDataSource和QLPreviewPanelDelegate协议,并将代理分配给QLPreviewPanel。

需要采取一些步骤,但演示项目QuickLookDownloader很好地说明了这一点。


你知道是否可以在完全不启动模拟器的情况下启用QuickLook吗? - gran_profaci
1
我不确定你所说的“模拟器”是什么意思。无论如何,我已经多年没有涉及这方面的工作了,所以我怀疑我能否给你任何有用的建议。 - bgh
iOS模拟器。如果您没有启动模拟器,可以使用QuickLook吗?我当然完全理解。谢谢。 - gran_profaci
当您激活QuickLook时弹出的窗口(例如在Finder中按空格键时)与iOS无关。如果您想将预览嵌入应用程序窗口而不是弹出QuickLook窗口,则我不知道是否可能。 - bgh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接