iOS QLPreviewController预览PDF文件等(Swift)

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的方式添加视图

    Swift 复制代码
    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。

相关推荐
lifallen21 分钟前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研24 分钟前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
cui__OaO2 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
鱼鱼说测试2 小时前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
艾莉丝努力练剑3 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
CHEN5_023 小时前
【Java基础面试题】Java基础概念
java·开发语言
杜子不疼.4 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
落霞的思绪5 小时前
Java设计模式详细解读
java·开发语言·设计模式
阿巴~阿巴~5 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
YungFan5 小时前
iOS26适配指南之UIButton
ios·swift