Я исследовал это решение для совместного использования ячеек табличного представления через UIActivityViewController, однако количество строк в моем 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 и, конечно, предполагается, что список не будет длиннее, чем в 2,5 раза, чем fitsize.height - Is есть лучшее решение, которое знает, где находится дно ячейки таблицы? Спасибо.