我有一个 PDF,其中包含不同高度的页面,我想以水平分页的方式显示,一次一页,页面之间没有间隙,并且每页的顶部与视图的顶部对齐。例如:
我想使用PDFKit
's PDFView
,特别是因为这些设置可以通过以下方式实现:
let pdfView = PDFView()
pdfView.displayDirection = .horizontal
pdfView.displaysPageBreaks = false
pdfView.usePageViewController(true, withViewOptions: nil)
但是,这会产生以下结果:
这是由于页面的高度不同。每个页面在 中垂直居中PDFView
,如果页面的高度大于视图的高度(例如第 2 页),则按纵横比缩放以适应。
为了尝试解决第一个问题,垂直偏移,我尝试了几件事。首先,这很严重,我知道这是错误的,在检查视图层次结构并找到在其中呈现页面的私有视图(名为 的类的视图PDFTextInputView
)之后,我尝试将其框架调整origin.y
为0
最外层滚动视图(另一个私人视图)滚动。这是因为每当下一页或上一页滚动到视图中时,页面都会呈现在视图的顶部。但是,一旦用户在该页面上进行捏合缩放,它的框架就会自动跳回居中。除了依赖私有视图层次结构之外,这种方法是行不通的。
为了尝试解决“高页面问题”(第 2 页),我尝试在出现新页面时调整 PDFView 的比例因子。可悲的是,.PDFViewPageChanged
通知仅在滚动视图结束减速后触发,因此页面在滚动时被缩小,然后当我调整比例因子时它会跳转以适应屏幕的宽度。然后我转向.PDFViewVisiblePagesChanged
which 确实会触发,因为下一页/上一页正在进入视野(以及更多次,这很好),这与.PDFViewPageChanged
.
我尝试过的其他事情:
- 调整
transform
文档视图 - 拦截捏合手势并调整文档视图的中心
- 创建我自己的页面控制器并每页呈现一个 PDF 页面(不使用
pdfView.usePageViewController
)
有人对我如何实现我所追求的有任何想法吗?