PDFKit - 如果没有 usePageViewController(),PdfView 将不会是 RTL
PDFKit - PdfView won't be RTL without usePageViewController()
我想水平显示PDF,从右到左,逐页连续显示,用户捏合一页将使所有页面同步相同比例。
我写的代码如下:
if let pdfDocument = PDFDocument(url: pdfUrl) {
pdfView.document = pdfDocument
pdfView.displayMode = .singlePageContinuous
pdfView.displaysRTL = true
pdfView.autoScales = true
pdfView.autoresizesSubviews = true
pdfView.displayDirection = .horizontal
pdfView.displaysPageBreaks = true
pdfView.pageBreakMargins = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
}
但是 displaysRTL 不起作用,默认比例不会显示整个单页,而是适合 PDF 页面高度(页面右侧会超出屏幕)。
如果我加上
pdfView.usePageViewController(true)
PDF displayRTL 有效,默认情况下每页都适合屏幕大小。但是这样会使PDF不能逐页显示,并且放大比例与其他页面不一样。
左侧页面比例与右侧当前放大页面不一致。如果用户捏一个页面,我需要它们都具有相同的比例。
有什么办法可以解决这个问题吗?
另外,每个页面的左上角都会显示一个图标,不知道是什么意思,怎么隐藏..
我找到了一种让它手动显示RTL的方法。
不要使用 usePageViewController(true)
,只是重新排序 PDFDocument 中的页面。
let doc = PDFDocument()
var getPage = pdfDocument.pageCount - 1
for i in 0..<pdfDocument.pageCount {
guard let pageRef = pdfDocument.page(at: getPage) else { fatalError() }
doc.insert(pageRef, at: i)
getPage -= 1
}
pdfView.document = doc
// Display PDF from last page if Right to Left
if (isPageRTL) {
pdfView.goToLastPage()
}
我发现如果 PDF 在 iOS 12 和 iOS 13 中很大(iOS 14 似乎没问题),Apple 的 PDFView 会发生内存泄漏和崩溃。所以我必须找到其他方式来显示适合我需要的 PDF。
我想水平显示PDF,从右到左,逐页连续显示,用户捏合一页将使所有页面同步相同比例。
我写的代码如下:
if let pdfDocument = PDFDocument(url: pdfUrl) {
pdfView.document = pdfDocument
pdfView.displayMode = .singlePageContinuous
pdfView.displaysRTL = true
pdfView.autoScales = true
pdfView.autoresizesSubviews = true
pdfView.displayDirection = .horizontal
pdfView.displaysPageBreaks = true
pdfView.pageBreakMargins = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
}
但是 displaysRTL 不起作用,默认比例不会显示整个单页,而是适合 PDF 页面高度(页面右侧会超出屏幕)。
如果我加上
pdfView.usePageViewController(true)
PDF displayRTL 有效,默认情况下每页都适合屏幕大小。但是这样会使PDF不能逐页显示,并且放大比例与其他页面不一样。
左侧页面比例与右侧当前放大页面不一致。如果用户捏一个页面,我需要它们都具有相同的比例。
有什么办法可以解决这个问题吗?
另外,每个页面的左上角都会显示一个图标,不知道是什么意思,怎么隐藏..
我找到了一种让它手动显示RTL的方法。
不要使用 usePageViewController(true)
,只是重新排序 PDFDocument 中的页面。
let doc = PDFDocument()
var getPage = pdfDocument.pageCount - 1
for i in 0..<pdfDocument.pageCount {
guard let pageRef = pdfDocument.page(at: getPage) else { fatalError() }
doc.insert(pageRef, at: i)
getPage -= 1
}
pdfView.document = doc
// Display PDF from last page if Right to Left
if (isPageRTL) {
pdfView.goToLastPage()
}
我发现如果 PDF 在 iOS 12 和 iOS 13 中很大(iOS 14 似乎没问题),Apple 的 PDFView 会发生内存泄漏和崩溃。所以我必须找到其他方式来显示适合我需要的 PDF。