У меня была небольшая удача: я прошелся по иерархии представлений и вызвал -drawRect: себя. Есть немного настроек, которые вы должны выполнить перед каждым, например, перевод ctm и очистка текстовой матрицы, но когда вы сделали это для каждого представления, вы можете сделать это:
UIGraphicsPushContext(ctx);
[self drawRect:self.frame];
UIGraphicsPopContext();
PDF-файл, который он генерирует, основан на векторах, а не на плоском растровом изображении, поэтому он хорошо масштабируется, и вы можете выбрать текст в средстве просмотра / браузере. Это работает только на обычном ванильном рисовании и очень простых вещах, таких как UILabels. Я сомневаюсь, что это будет работать с более сложными объектами UIKit (я имею в виду представления таблицы и представления прокрутки). Кроме того, вам понадобится дополнительная работа для UIImageViews (я предполагаю установить свойство содержимого слоя с помощью CGImageRef), а если у вас есть другие атрибуты и преобразования на основе слоя - еще больше работы.
Надеюсь, Apple даст нам лучшее решение, чем поддержка кода параллельного рисования!