我已经研究了通过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单元格的底部在哪里?谢谢。