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