Создать PDF всего UITableView для iOS версии выше 13.x - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь создать PDF из UITableView для совместного использования данных извне.

Проблема в том, что код, который я использовал, отлично работает на устройствах версии ниже iOS 13, но на версии выше 13 он только рендерит данные, которые на экране. Теперь я ожидаю отрисовки всего UITableView для версии выше 13.x. Если у кого-то есть предложения, пожалуйста, дайте мне знать.

Заранее спасибо:)

Вот мой код:

func createPDFDataFromTableView(tableView: UITableView) -> NSURL {
    let priorBounds = tableView.bounds
    let fittedSize = tableView.sizeThatFits(CGSize(width:priorBounds.size.width, height:tableView.contentSize.height))
    tableView.bounds = CGRect(x:0, y:0, width:fittedSize.width, height:fittedSize.height)

    let pdfPageBounds = CGRect(x:0, y:0, width:tableView.frame.width,height:tableView.contentSize.height) //height:self.view.frame.height)
    let pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds,nil)
    var pageOriginY: CGFloat = 0
    while pageOriginY < fittedSize.height {
     UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil)
     UIGraphicsGetCurrentContext()!.saveGState()
     UIGraphicsGetCurrentContext()!.translateBy(x: 0, y: -pageOriginY)
     tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
     UIGraphicsGetCurrentContext()!.restoreGState()
     pageOriginY += pdfPageBounds.size.height
     print(pageOriginY)
    }

    UIGraphicsEndPDFContext()
    tableView.bounds = priorBounds

    //try saving in doc dir to confirm:
    let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last
    self.ticksnew = getCurrentDate()
    if annDetail.announTitle != nil
    {
        FileNameToDelete=annDetail.announTitle
    }
    let fileName:String!="\(FileNameToDelete).pdf"
    let path = dir?.appendingPathComponent(fileName!)

    do {
        try pdfData.write(to: path!, options: NSData.WritingOptions.atomic)
    } catch {
        print("error catched")
    }
    return path! as NSURL
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...