Swift pdf并未涵盖表格视图中的所有单元格

时间:2018-11-08 12:23:48

标签: swift pdf tableview

我已经研究了通过UIActivityViewController共享表视图单元格的解决方案,但是,tableView中的行数超过了此处显示的高度,因此我的某些tableview单元格在生成的pdf / email /中被“切断”了等

   let priorBounds: CGRect = self.tableView.bounds
    let fittedSize: CGSize = self.tableView.sizeThatFits(CGSize(width: priorBounds.size.width, height: self.tableView.contentSize.height))
    self.tableView.bounds = CGRect(x: 0, y: 0, width: fittedSize.width, height: fittedSize.height)
    self.tableView.reloadData()
    let pdfPageBounds: CGRect = CGRect(x: 0, y: 0, width: fittedSize.width, height: (fittedSize.height))
    let pdfData: NSMutableData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil)
    UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil)
    self.tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
    self.tableView.bounds = priorBounds
    UIGraphicsEndPDFContext()
    let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
    let documentsFileName = documentDirectories! + "/" + "pdfName"
    pdfData.write(toFile: documentsFileName, atomically: true)

我是否正确地认为解决此问题的正确方法是通过增加fitSize.height的深度:

   let priorBounds: CGRect = self.tableView.bounds
    let fittedSize: CGSize = self.tableView.sizeThatFits(CGSize(width: priorBounds.size.width, height: self.tableView.contentSize.height))
    self.tableView.bounds = CGRect(x: 0, y: 0, width: fittedSize.width, height: fittedSize.height * 2.5)
    self.tableView.reloadData()
    let pdfPageBounds: CGRect = CGRect(x: 0, y: 0, width: fittedSize.width, height: (fittedSize.height * 2.5))
    let pdfData: NSMutableData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil)
    UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil)
    self.tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
    self.tableView.bounds = priorBounds
    UIGraphicsEndPDFContext()
    let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
    let documentsFileName = documentDirectories! + "/" + "pdfName"
    pdfData.write(toFile: documentsFileName, atomically: true)

虽然这行得通,但不是很漂亮-我在pdf / email / etc的底部有很多浪费的空间,当然,它假定列表的长度不会超过fitsize.height的2.5倍。有一个更好的解决方案,它知道tableview单元格的底部在哪里?谢谢。

0 个答案:

没有答案