这是一个用于在 iOS 上显示 PDF 的 UIView 子类。我创建这个类是为了在 UIWebView 中显示 PDF 时,缺乏必要的样式选项和反馈。
PDFView
此仓库包含一个示例应用程序,您可以从中使用 PDFView 的设置进行实验,以了解它可以做什么。
将 SJCSimplePDFView.h
和 SJCSimplePDFView.m
文件复制到您的项目中。
(Cocopods 集成即将推出。)
PDFView 可以通过 Interface Builder 或代码(使用 -initWithFrame:
)创建和配置。
可以通过以下三种方式之一将 PDF 文档加载到 PDFView 中:
.PDFData
属性设置为包含 PDF 文件的 NSData 对象。.PDFFileURL
设置为 PDF 文档的 URL。注意,这应该是本地文件 URL(file://...)。如果您尝试使用任何其他 URL 设置此值,将抛出异常。.PDFBundleFileName
属性设置为包含在您的应用程序包中的 PDF 文档的文件名。此属性也可以在 Interface Builder 中设置(尽管当前在 Interface Builder 中不会显示 PDF 的内容)。.viewMode
可以在 Interface Builder 中指定。由于当前与枚举一起工作的限制,这是一个可以接受任何值的整数字段。下方的值注有效,其他值将被解释为 0。它有 3 种可能的显示模式
kSJCPDFViewModeContinuous
[0] -- 页面以端到端方式显示,宽度设置为 PDFView 的宽度,并垂直滚动kSJCPDFViewModePageVertical
[1] -- 单个页面显示,缩放以适应 PDFView,并垂直滚动kSJCPDFViewModePageHorizontal
[2] -- 单个页面显示,缩放以适应 PDFView,并水平滚动一旦设置了文档,可以在 .documentPageCount
中找到它包含的页数。默认情况下,显示文档的所有页面。要显示页面子集,请将 .displayPages
设置为包含要显示的页码的 NSIndexSet。 .displayedPageCount
包含将从文档中实际显示的页面数。
.currentPage
表示当前显示的页面编号。如果一次可以显示多个页面(如果 .viewMode
是 kSJCPDFViewModeContinuous
),则 .currentPages
返回一个包含所有可见页面编号的 NSIndexSet(在其他模式下返回一个仅包含 .currentPage
的 NSIndexSet)。页面编号从 1 开始,基于 .displayedPages
,而不是 PDF 文档中页面位置,因此如果您只想显示文档的 21-25 页,则 .currentPage
将将这些报告为 1-5 页。设置 .currentPage
会更改显示的页面,只要新值在 1 和 .displayedPageCount
(包含)之间。
如果您想要跟踪用户与 PDFView 的交互,.currentPage
是 KVO 兼容的(参见示例应用程序)。
可以通过 .pageInsets
设置 PDFView 边缘与页面之间的内边距。可以通过 .pageBackgroundColour
设置此内边距区域的背景颜色。(注意,大多数具有白色背景的 PDF 事实上是透明的。)可以通过 .borderColour
和 .borderWidth
设置围绕此内边距区域绘制的边框的宽度与颜色。所有这些属性都可以在 Interface Builder 中设置。