ios PDFKit displaymode = singlepage仅显示pdf的第一页

问题描述 投票:1回答:3

我试图通过苹果PDFKit库在ios上显示pdf,而不是使用PDFDisplayMode.singlePageContinuous模式,我想停止分页符,所以我试图使用PDFDisplayMode.singlePage。 https://developer.apple.com/documentation/pdfkit/pdfdisplaymode

但是,这种模式似乎只显示pdf的一页,这是无用的。我已尝试在页面中添加滑动处理程序,但它们也无法正常工作。

我找到了示例应用程序并更改了他们的代码来测试pdfdisplaymode但是遇到了同样的问题,例如https://github.com/vipulshah2010/PDFKitDemo

如何使用pdfkit一次实现一页pdfviewer,允许在页面之间滑动?!

ios swift pdfkit uiswipegesturerecognizer singlepage
3个回答
2
投票

使用滑动手势识别器(UISwipeGestureRecognizer)让用户向左和向右滑动PDF视图屏幕(PDFView)。

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
    }
}

2
投票

另一种简单的方法是设置

pdfView.usePageViewController(true) 

这会为您添加页面之间的滑动,而无需设置自己的手势。见下面的例子:

override func viewDidLoad() {
    super.viewDidLoad()

    // Add PDFView to view controller.
    let pdfView = PDFView(frame: self.view.bounds)
    self.view.addSubview(pdfView)

    // Configure PDFView to be one page at a time swiping horizontally
    pdfView.autoScales = true
    pdfView.displayMode = .singlePage
    pdfView.displayDirection = .horizontal
    pdfView.usePageViewController(true)

    // load PDF
    let webUrl: URL! = URL(string: url)
    pdfView.document = PDFDocument(url: webUrl!)
}

0
投票

您可以简单地将displayMode设置为连续,它可能会起作用:

pdfView.displayMode = .singlePageContinuous
© www.soinside.com 2019 - 2024. All rights reserved.