【发布时间】:2011-09-29 02:27:03
【问题描述】:
我想获得一些关于如何实现水平滚动的 PDF 视图的提示。
我知道如何使用 UIWebView 实现 PDF 阅读器,但只是垂直滚动。
【问题讨论】:
标签: objective-c cocoa-touch pdf uiwebview
我想获得一些关于如何实现水平滚动的 PDF 视图的提示。
我知道如何使用 UIWebView 实现 PDF 阅读器,但只是垂直滚动。
【问题讨论】:
标签: objective-c cocoa-touch pdf uiwebview
我找到了一个具有此功能的开放项目
【讨论】:
我找到了一个具有此功能的开放项目 =D
【讨论】:
我已经做到了。代码对于付费客户是私有的,所以我不能直接分享,但基本思路是这样写:
使用CGPDFPageRef 和CGPDFDocument* 和CGContextDrawPDFPage 系列函数呈现PDF 单页的UIView 子类。从layerClass 类方法返回[CATiledLayer class] 并适当地设置图层的levelsOfDetail 和tileSize 属性对这个视图有很大帮助。我的也实现了sizeThatFits 来返回页面大小加上一个小间距,并在 pdf 页面的边缘呈现一个微妙的阴影。
请记住,UIKit 绘图与 CG 绘图是颠倒的;所以在绘画之前做一个CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); CGContextScaleCTM(ctx, 1.0, -1.0);。
一个 UIView 子类包含和布局(并被委托)处于分页模式的 UIScrollView(主水平分页器),以及每个页面的单独 UIScrollView,每个都包含上述视图之一(用于放大单个页面。 ) 嵌套滚动视图是 Apple 明确认可的做这类事情的方式。这个视图需要按照你想要的方式布置页面;大概在一个长的水平条中,每个都缩放到合适的大小。
如果不需要页面缩放,可以跳过嵌套的滚动视图,直接在水平滚动条中布局页面视图。
TL;DR: 不幸的是,这并不像把它扔进 UIWebView 那样简单;但这是可行的,而且直接的方法确实有效。
【讨论】: