ios PDFKit displaymode = singlepage 只显示pdf的第一页
ios PDFKit displaymode = singlepage only shows the first page of the pdf
我正在尝试通过苹果 PDFKit 库在 ios 上显示 pdf,而不是使用 PDFDisplayMode.singlePageContinuous 模式,我想在分页符处停止,所以我正在尝试使用 PDFDisplayMode.singlePage。
https://developer.apple.com/documentation/pdfkit/pdfdisplaymode
不过这个模式好像只能显示pdf的一页,没什么用。我试过向页面添加滑动处理程序,但它们也不起作用。
我找到了示例应用程序并更改了它们的代码以测试 pdfdisplaymode 但遇到了同样的问题,例如
https://github.com/vipulshah2010/PDFKitDemo
如何使用 pdfkit 实现一次一页的 pdfviewer,允许在页面之间滑动?!
使用滑动手势识别器 (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
}
}
另一种简单的方法是设置
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!)
}
您可以简单地将 displayMode
设置为连续,它可能会起作用:
pdfView.displayMode = .singlePageContinuous
我正在尝试通过苹果 PDFKit 库在 ios 上显示 pdf,而不是使用 PDFDisplayMode.singlePageContinuous 模式,我想在分页符处停止,所以我正在尝试使用 PDFDisplayMode.singlePage。 https://developer.apple.com/documentation/pdfkit/pdfdisplaymode
不过这个模式好像只能显示pdf的一页,没什么用。我试过向页面添加滑动处理程序,但它们也不起作用。
我找到了示例应用程序并更改了它们的代码以测试 pdfdisplaymode 但遇到了同样的问题,例如 https://github.com/vipulshah2010/PDFKitDemo
如何使用 pdfkit 实现一次一页的 pdfviewer,允许在页面之间滑动?!
使用滑动手势识别器 (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
}
}
另一种简单的方法是设置
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!)
}
您可以简单地将 displayMode
设置为连续,它可能会起作用:
pdfView.displayMode = .singlePageContinuous