У меня не работала простая 4-строчная версия. У меня есть UIView (с подуровнями) и дочерний UITextView. Я могу визуализировать UIView в UIImage, но дочерний UITextView не обрабатывается.
Мое простое решение заключается в следующем:
CGRect rect = [view bounds];
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
for (UIView *sv in view.subviews)
{
CGContextTranslateCTM(context, sv.frame.origin.x, sv.frame.origin.y);
[sv.layer renderInContext:context];
CGContextTranslateCTM(context, -sv.frame.origin.x, -sv.frame.origin.y);
}
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Обратите внимание, что простое использование CGContextTranslateCTM предполагает, что дочерние представления не имеют никакого преобразования, кроме преобразования. Также я предполагаю, что дочерние представления полностью содержатся в рамке родительского представления.