Я работаю с целью iOS 10 для корпоративного приложения (босс не хочет нацеливаться на более позднюю версию, поэтому библиотеки PDFKit и post- iOS 10 не обсуждаются) и нужно сделать некоторую пользовательскую обработку, чтобы превратить иерархию представления контроллера представления в документ PDF для счета. В настоящее время я обрабатываю это с помощью следующей логики c в своем пользовательском классе PDFGenerator:
// PDFGenerator instance variables used...
var vc_Invoice: InvoiceViewController?
var data_InvoicePDF: Data?
func renderInvoicePDF() {
guard let invoiceView = vc_Invoice?.view else {
print("PDFGenerator error loading invoice's view")
return
}
let invoicePDFData = NSMutableData()
UIGraphicsBeginPDFContextToData(invoicePDFData, invoiceView.bounds, nil)
UIGraphicsBeginPDFPage()
guard let invoiceContext = UIGraphicsGetCurrentContext() else { return }
invoiceView.layer.render(in: invoiceContext)
UIGraphicsEndPDFContext()
data_InvoicePDF = invoicePDFData as Data
}
Однако, в зависимости от количества позиций в счете, этот PDF-файл может стать очень высоким и превышать высоту стандартный лист бумаги. Мне нужно разбить документ на несколько страниц, но также необходимо, чтобы информация о заголовке компании, которая находится вверху документа, отображалась вверху каждой страницы.
Идея, которую я преследовал, чтобы достичь sh, заключается в том, чтобы записать раздел заголовка компании в отдельный слой, чтобы нарисовать его в верхней части каждой страницы, а затем записать последующие фрагменты представления. в свои собственные слои, чтобы затем положить их в PDFContext, итерируя по высоте представления, пока полная высота не будет разбита на страницы.
Я представляю себе некоторую функцию, которая принимает CGRect и UIView в качестве параметров, чтобы затем захватить эту часть сцены и вернуть ее как свой собственный объект слоя. Существует ли что-либо подобное в CoreGraphics или в любой другой библиотеке Cocoa Touch? Если нет, есть ли рекомендуемый маршрут к go о том, что я пытаюсь выполнить sh? Может быть, получить графический контекст для полного просмотра, а затем взять ректы из этого контекста?
Я прочитал руководство по программированию Quartz 2D и хорошо понимаю его на данный момент, но это мой первый время действительно пытается сделать любую сложную работу с Core Graphics.
Заранее благодарим за любую помощь!