QLPreviewController是可以显示常见文件的专用控制器。可以显示的文件有:
文档类:
PDF (.pdf
)
Microsoft Office 文件:
Word 文档 (.doc
, .docx
)
Excel 表格 (.xls
, .xlsx
)
PowerPoint 演示文稿 (.ppt
, .pptx
)
iWork 文档:
Pages (.pages
)
Numbers (.numbers
)
Keynote (.key
)
纯文本文件 (.txt
, .rtf
)
图片与多媒体:
图片格式:
JPEG (.jpg
, .jpeg
)
PNG (.png
)
GIF (.gif
)
TIFF (.tiff
)
SVG (.svg
)
音频/视频:
MP3 (.mp3
)
WAV (.wav
)
MP4 (.mp4
, .m4v
, .mov
)
其他文件类型:
压缩包 (.zip
)
电子书 (.epub
)
代码文件(部分文本可预览,如 .json
, .xml
, .html
等)
QLPreviewController内部的属性和方法都很简单,自己看一下就行了,我就列个文件预览的示例代码吧。Swift实现:
QLPreviewController有自己的导航栏的,我这里不需要所以通过添加qlPreviewController.view的方式添加视图
import UIKit
import QuickLook
class ViewController: UIViewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource {
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> any QLPreviewItem {
//多换几种文件格式试试
let url = Bundle.main.url(forResource: "嘻嘻嘻", withExtension: "PPTX")
return url! as QLPreviewItem
}
override func viewDidLoad() {
super.viewDidLoad()
loadPreviewWithQuickLook()
}
//文件预览
private func loadPreviewWithQuickLook() {
let qlPreviewController = QLPreviewController.init()
qlPreviewController.modalPresentationStyle = .fullScreen
qlPreviewController.delegate = self
qlPreviewController.dataSource = self
qlPreviewController.currentPreviewItemIndex = 0
self.addChild(qlPreviewController)
qlPreviewController.view.frame = .init(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)
self.view.addSubview(qlPreviewController.view)
}
}