Классический ответ:
Я думаю, что вы, вероятно, ищете CALayer renderInContext: . Каждый UIView имеет CALayer, который вы можете получить через свойство layer . Таким образом, вы можете создать CGContext, который вы хотите (который, вероятно, будет растровым контекстом), сделать так, чтобы слой представления отображал представление в контексте, а затем делать с этими данными все, что вы хотите, независимо от того, разделяет ли он их на кучу UIImages и следовательно, UIImageViews для эффекта CoreAnimation, загрузите его в OpenGL или что-то еще.
Пример кода предоставляется непосредственно Apple в Q & A 1703 , который использует расширения UIKit CoreGraphics для прямого перехода к UIImage и просматривает все доступные окна, чтобы захватить изображение всего экрана. Но это показывает вам суть вещи.
Обновлено в 2015 году:
Начиная с iOS 7, как описано в Q & A 1817 , UIView
предоставляет -drawViewHierarchyInRect:afterScreenUpdates:
, что сокращает код, необходимый для еще более моментального снимка представления - до четырех строк в примере кода Apple. Похоже, что вопросы и ответы 1703 были отозваны, так как они больше не доступны на стороне Apple; ссылка выше на внешнюю архивную копию. Таким образом, совет 1817 года - это то, чему нужно следовать.