bee*_*eeb 1 cocoa mp3 quicklook swift
我的应用程序在 NSTableView 中列出音频文件 (MP3),每行的对象都包含音频文件的路径。我希望在选择一行时按下空格键时能够使用“快速查看”(如在 Finder 中)预览音频文件。
通过查看相关问题和答案,我注意到该 API 似乎是私有的,因此很难找到有关此内容的最新可靠信息或文档,更不用说在 Swift 中了。更重要的是,我发现的大多数示例都与图像预览有关,有些实际上提到了 Xcode 的“调试快速查看”,这根本不是我感兴趣的。
我见过一个 FTP 客户端,它可以对 Finder 可以预览的任何文件进行快速查看预览,因此我猜测可以在应用程序中使用它,特别是在本机支持文件格式的情况下。
有人能指出我正确的方向吗?
事实证明这实际上非常简单。所有 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")
}
}
}
Run Code Online (Sandbox Code Playgroud)
这分为三个部分。
首先,要打开标准“快速查看”窗口,只需调用makeKeyAndOrderFront共享面板即可。
面板知道要显示什么,因为它与其数据源通信,而数据源是通过QLPreviewPanelDataSource. 正如您在我的示例中看到的,它只是返回一个计数2,并且可以要求它返回一个实现 的对象QLPreviewItem。
对于我的演示,我只是将NSURL实例返回到系统默认包含的两个资源。事实证明NSURL已经实现了该QLPreviewItem协议,因此无需执行任何额外操作。
如果您想要预览的项目不容易转换为文件系统上的 URL(文件),那么您将需要对对象进行更复杂的实现QLPreviewItem。
我敢打赌,指向 MP3 文件就可以正常工作。
| 归档时间: |
|
| 查看次数: |
3395 次 |
| 最近记录: |