objective-c - 带水平滚动的 PDF View

标签 objective-c cocoa-touch pdf uiwebview

我想获得有关如何实现水平滚动的 PDF View 的一些提示。

我知道如何使用 UIWebView 实现 PDF 阅读器,但只是垂直滚动。

最佳答案

我已经做到了。代码是付费客户私有(private)的,所以我不能直接分享,但基本思路是这样写:

  • 一个呈现 PDF 单页的 UIView 子类,使用 CGPDFPageRefCGPDFDocument*CGContextDrawPDFPage 系列职能。从 layerClass 类方法返回 [CATiledLayer class] 并适本地设置图层的 levelsOfDetail 和 tileSize 属性对这个 View 有很大帮助。我的还实现了 sizeThatFits 以返回页面大小加上一个小间距,并在 pdf 页面的边缘周围呈现一个微妙的阴影。

    请记住,UIKit 绘图与 CG 绘图是颠倒的; CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); 也是如此CGContextScaleCTM(ctx, 1.0, -1.0); 绘画前。

  • 一个 UIView 子类包含和布局(并被委托(delegate))一个处于分页模式的 UIScrollView(主水平分页器),每个页面都有一个单独的 UIScrollView,每个包含上述 View 之一(用于放大单个页面。)嵌套 ScrollView 是 Apple 明确认可的执行此类操作的方式。这个 View 需要按照你想要的方式布置页面;大概在一个长的水平 strip 中,每个都缩放到合适的尺寸。

    如果不需要页面缩放,可以跳过嵌套 ScrollView ,直接在水平滚动条中布局页面 View 。

TL;DR:不幸的是,它不像在 UIWebView 中扔它那么简单;但这是可行的,而且直接的方法确实有效。

关于objective-c - 带水平滚动的 PDF View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588003/

相关文章:

java - 在java中从Google Drive下载pdf和tif文件

ios - 如何在 iPad 中注释 PDF

ios - 想要将时间戳添加到居中对齐 textview 并将标签调整为右对齐

ios - 它对 NSMutableArray 进行排序吗?

java - 电话 session iOS/android?

android - 智能手机和平板电脑 - 插入计算机

ios - 从 Cocoa Touch 框架创建 CocoaPod

iphone - [iPhone]用户无法交互的区域,为什么?

java - PDFBox 图像元数据

objective-c - CocoaPods 没有这样的文件或目录