UIView, а также представление, содержащееся в UIViewController, могут быть отображены со слоем:
Получить контекст:
let context = UIGraphicsGetCurrentContext()!
UIView:
view.layoutIfNeeded()
view.layer.render(in: context)
UIViewController
controller.loadViewIfNeeded()
controller.view.layer.render(in: context)
Полный рабочий скрипт:
let pdfMetadata =
[
kCGPDFContextCreator: "MyAppName",
kCGPDFContextAuthor: "TheAuthor"
]
UIGraphicsBeginPDFContextToFile(filePath, CGRect.zero, pdfMetadata)
let context = UIGraphicsGetCurrentContext()!
UIGraphicsBeginPDFPage()
controller.loadViewIfNeeded()
controller.view.layer.render(in: context)
UIGraphicsEndPDFContext()