Guardar UIView con CALayer.mask como UIImage en iOS 6

Tengo el siguiente código:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(mainView.bounds.size, NO, [UIScreen mainScreen].scale); } else { UIGraphicsBeginImageContext(mainView.bounds.size); } [mainView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

En mainView, hay una subvista enmascarada que no aparece en saveImage cuando se usa este método. Sin embargo, entiendo que solía haber un método UIGetScreenImage pre iOS 4 que capturó dicha actividad. Mi pregunta es: ¿cuál es la mejor manera de capturar las actividades de CALayer en iOS 6? ¿UIGetScreenImage sigue siendo privado?

Creo que hubo una pregunta similar hace una semana: la máscara no funciona cuando se captura una uiview a una uiimage

En iOS6 hay un problema al capturar una UIView con la máscara aplicada (btw, en iOS 7 se ha corregido): capturas la image, pero la máscara no se aplica.

Publiqué una solución larga que implicaba aplicar la máscara manualmente a la image capturada. No es muy difícil y también hice un proyecto de demostración de esto. Puedes downloadlo aquí:

https://bitbucket.org/reydan/so_imagemsk

Si no entendí su problema correctamente, dímelo para que pueda eliminar esta respuesta.

intente get la capa de presentación en su lugar, ya que contendrá el estado de la capa.

 [mainView.layer.presentationLayer renderInContext:UIGraphicsGetCurrentContext()]; 

https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instm/CALayer/presentationLayer