【发布时间】:2015-02-10 19:56:23
【问题描述】:
我一直在堆栈上,谷歌试图找到正确的方法来解决这个问题,任何帮助都会很棒。
我可以在 PDF 中呈现第一页,但其他所有页面都是空白的。
我在情节提要的视图控制器上有一个 UIScrollView。我在视图控制器的 viewDidLoad 方法中将内容动态加载到该滚动视图中。添加任何项目后,我记录它的高度,然后相应地设置滚动视图的内容大小高度,因此滚动视图很好。它的内容宽度设置为 612
然后我调用一个函数来创建一个 PDF:
func createPDF() {
let pdfData = NSMutableData()
let scrollHeigt = scrollViewForContent.contentSize.height
let rawNumberOfPages = scrollHeigt / CGFloat(792)
let numberOfPages = Int(ceil(rawNumberOfPages))
var pageNumber = Int()
let pageSize = CGSizeMake(612, 792)
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)
let pdfContext : CGContextRef = UIGraphicsGetCurrentContext()
do {
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil)
if pageNumber < 1 {
scrollViewForContent.layer.renderInContext(pdfContext)
} else if pageNumber >= 1 {
let offsetForScroll = CGFloat(pageNumber * 792)
scrollViewForContent.setContentOffset(CGPointMake(0, offsetForScroll), animated: false)
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, -offsetForScroll)
scrollViewForContent.layer.renderInContext(pdfContext)
}
pageNumber++
}
while pageNumber < numberOfPages
UIGraphicsEndPDFContext()
let tempDir = NSTemporaryDirectory()
let tempDirWithFilename = tempDir.stringByAppendingPathComponent("test1.pdf")
pdfData.writeToFile(tempDirWithFilename, atomically: true)
let aURL : NSURL = NSURL(fileURLWithPath: tempDirWithFilename)!
let objectsToShare : NSArray = [aURL]
let activityVc = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
self.presentViewController(activityVc, animated: true, completion: nil)
}
为什么没有呈现超过第一页的数据?我得到了正确的页数,只有第一页有任何数据。谢谢(我是新手,非常感谢您抽出宝贵时间查看)。
【问题讨论】:
标签: ios swift pdf uiscrollview