在Swift cocoa应用程序中使用Quick Look来预览音频文件

时间:2015-09-27 17:34:23

标签: swift cocoa mp3 quicklook

我的应用程序在NSTableView中列出音频文件(MP3),每行的对象包含音频文件的路径。我希望能够在选择一行时按空格键时使用快速查看(如在Finder中)预览音频文件。

通过查看相关问题和答案,我注意到API似乎是私有的,因此很难找到有关此问题的最新可靠信息或文档,更不用说在Swift中了。更重要的是,我发现大多数与图像预览相关的示例,有些实际上提到了#34;调试快速查看" Xcode,这根本不是我感兴趣的。

我见过一个FTP客户端为Finder可以预览的任何文件执行Quick Look预览,因此我猜测它可以在一个应用程序中使用它,特别是如果文件格式是原生支持。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

事实证明这很简单。所有API都是公开的。我确实认为使用 OS 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对象执行更复杂的实现。

我敢打赌,指向MP3文件的工作正常。