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。

相关推荐
C^h8 小时前
c++ string
开发语言·c++
raindayinrain9 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的9 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao9 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的10 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的10 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”10 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
小王C语言10 小时前
Qt常用控件:容器类控件,标题分组框、标签页(浏览器标签)
开发语言·qt
传奇开心果编程11 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
我是唐青枫11 小时前
Kotlin Delegation 委托详解
开发语言·kotlin