我的应用程序在 NSTableView 中列出音频文件 (MP3),每行的对象都包含音频文件的路径。我希望在选择一行时按下空格键时能够使用“快速查看”(如在 Finder 中)预览音频文件。
通过查看相关问题和答案,我注意到该 API 似乎是私有的,因此很难找到有关此内容的最新可靠信息或文档,更不用说在 Swift 中了。更重要的是,我发现的大多数示例都与图像预览有关,有些实际上提到了 Xcode 的“调试快速查看”,这根本不是我感兴趣的。
我见过一个 FTP 客户端,它可以对 Finder 可以预览的任何文件进行快速查看预览,因此我猜测可以在应用程序中使用它,特别是在本机支持文件格式的情况下。
有人能指出我正确的方向吗?
事实证明这实际上非常简单。所有 API 都是公开的。我确实认为事情变得更简单操作系统 X 10.10,也许只是没有很好的记录?
这是一个 ViewController 的示例,它有一个触发标准的按钮快速查看面板有两个项目可以在文件系统上找到。
class ViewController: NSViewController {
@IBAction func showQuickLookPanel(sender: AnyObject) {
if let panel = QLPreviewPanel.sharedPreviewPanel() {
panel.dataSource = self
panel.makeKeyAndOrderFront(self)
}
}
}
extension ViewController: QLPreviewPanelDataSource {
func numberOfPreviewItemsInPreviewPanel(panel: QLPreviewPanel!) -> Int {
return 2
}
func previewPanel(panel: QLPreviewPanel!, previewItemAtIndex index: Int) -> QLPreviewItem! {
if index == 0 {
return NSURL(fileURLWithPath: "/Library/Desktop Pictures/Beach.jpg")
} else {
return NSURL(fileURLWithPath: "/System/Library/Compositions/Rollercoaster.mov")
}
}
}
这分为三个部分。
一、开放标准快速查看窗口只是调用makeKeyAndOrderFront
在共享面板上。
面板知道要显示什么,因为它与数据源对话,这是通过QLPreviewPanelDataSource
。正如您在我的示例中看到的,它只是返回一个计数2
并且可以要求返回一个实现了QLPreviewItem
.
对于我的演示,我只是返回NSURL
系统默认包含的两个资源的实例。事实证明NSURL
已经实施了QLPreviewItem
协议,因此无需执行任何额外操作。
如果您想要预览的项目不容易转换为文件系统上的 URL(文件),那么您将需要执行更复杂的实现QLPreviewItem
object.
我敢打赌,指向 MP3 文件就可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)