ios PDFKit displaymode = singlepage only shows the first page of the pdf

前端 未结 3 1404
囚心锁ツ
囚心锁ツ 2021-01-20 10:15

I\'m trying to display a pdf on ios via apples PDFKit library, and rather than use PDFDisplayMode.singlePageContinuous mode, I want to stop at page breaks so I\'m trying to

3条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-20 10:42

    Use the swipe gesture recognizer (UISwipeGestureRecognizer) to let the user swipe the PDF view screen (PDFView) to the left and right.

    import UIKit
    import PDFKit
    
    class ViewController: UIViewController, PDFViewDelegate {
        // MARK: - Variables
    
        // MARK: - IBOutlet
        @IBOutlet weak var pdfView: PDFView!
    
        // MARK: - Life cycle
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let filePath = "/Users/george/Library/Developer/CoreSimulator/Devices/B5C5791C-3916-4BCB-8EB6-5D3D61C08DC0/data/Containers/Data/Application/4B644584-0025-45A7-9D71-C8F8478E4620/Documents/my PDF.pdf"
            pdfView.document = getDocument(path: filePath)
            pdfView.backgroundColor = .lightGray
            pdfView.autoScales = true
            pdfView.displayMode = .singlePageContinuous
            pdfView.usePageViewController(true, withViewOptions: nil)
            createMenu()
            thumbnail()
    
            /* swipe gesture */
            let leftSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(respondLeftSwipeGesture(_:)))
            leftSwipeGesture.direction = [UISwipeGestureRecognizer.Direction.left]
            self.view.addGestureRecognizer(leftSwipeGesture)
            let rightSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(respondRightSwipeGesture(_:)))
            rightSwipeGesture.direction = [UISwipeGestureRecognizer.Direction.right]
            pdfView.addGestureRecognizer(rightSwipeGesture)
        }
    
        @objc func respondLeftSwipeGesture(_ sender: UISwipeGestureRecognizer) {
            if pdfView.document == nil { return }
            pdfView.goToPreviousPage(self)
        }
    
        @objc func respondRightSwipeGesture(_ sender: UISwipeGestureRecognizer) {
            if pdfView.document == nil { return }
            pdfView.goToNextPage(self)
        }
    
        func getDocument(path: String) -> PDFDocument? {
            let pdfURL = URL(fileURLWithPath: path)
            let document = PDFDocument(url: pdfURL)
            return document
        }
    }
    

提交回复
热议问题