Swift version: 5.10
Apple’s Quick Look framework lets you embed previewing for a huge range of file types, including iWork documents, Microsoft Office documents, PDFs, images, and more, all without writing much code.
First, import the QuickLook framework, then make your view controller conform to the QLPreviewControllerDataSource
protocol. This protocol lets you provide items to Quick Look, which should be URLs pointing to whatever documents you’re trying to preview.
Now go ahead and create and present an instance of QLPreviewController
, setting your view controller to be its data source:
let previewController = QLPreviewController()
previewController.dataSource = self
present(previewController, animated: true)
There are two methods you need to implement: how many items your Quick Look controller should show, and the URL for each item. The first of those is just a matter of returning an integer from numberOfPreviewItems()
:
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 3
}
Now for the important part: Quick Look will call a previewItemAt
method for each item you want to preview, and you need to pass back a QLPreviewItem
pointing at it.
For this example I added three PDF files – 0.pdf, 1.pdf, and 2.pdf – to my project, so I’m going to pass back URLs to each of them. URL
conforms to QLPreviewItem
already, so we can just do an as
typecast to make this work:
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
guard let url = Bundle.main.url(forResource: String(index), withExtension: "pdf") else {
fatalError("Could not load \(index).pdf")
}
return url as QLPreviewItem
}
When that runs you’ll be able to swipe horizontally through Quick Look items, or swipe up and down through pages in your PDFs.
SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's all new Paywall Editor allow you to remotely configure your paywall view without any code changes or app updates.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 4.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.