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的方式添加视图Swiftimport 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) } }
效果:
但是如果要显示网页或者html文件,这个就不能实现了,得去使用WKWebView。