Попробуй использовать либу QuickLook.
class FileViewController: QLPreviewControllerDataSource, QLPreviewControllerDelegate {
private let url: URL
init(with url: URL) {
self.url = url
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
let previewController = QLPreviewController()
previewController.dataSource = self
previewController.delegate = self
previewController.currentPreviewItemIndex = 0
self.addChild(previewController)
previewController.didMove(toParent: self)
previewController.view.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(previewController.view)
self.view.backgroundColor = previewController.view.backgroundColor
NSLayoutConstraint.activate([
previewController.view.topAnchor.constraint(equalTo: self.view.topAnchor),
previewController.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
previewController.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
previewController.view.leftAnchor.constraint(equalTo: self.view.leftAnchor)
])
}
// MARK: - QLPreviewControllerDataSource, QLPreviewControllerDelegate implementation
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
return URL(fileURLWithPath: self.url.path) as QLPreviewItem
}
}