Me gustaría crear un objeto UIImage desde el contexto gráfico actual. Más específicamente, mi caso de uso es una vista en la que el usuario puede dibujar líneas. Pueden dibujar incrementalmente. Después de que terminen, me gustaría crear un UIImage para representar su dibujo.Cómo crear un UIImage del contexto de gráficos actual?
Esto es lo que drawRect: parece que para mí ahora:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSaveGState(c);
CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor);
CGContextSetLineWidth(c,1.5f);
for(CFIndex i = 0; i < CFArrayGetCount(_pathArray); i++)
{
CGPathRef path = CFArrayGetValueAtIndex(_pathArray, i);
CGContextAddPath(c, path);
}
CGContextStrokePath(c);
CGContextRestoreGState(c);
}
... donde _pathArray es de tipo CFArrayRef, y se rellena cada vez que touchesEnded: se invoca. También tenga en cuenta que DrawRect: se puede invocar varias veces, a medida que el usuario dibuja.
Cuando el usuario termine, me gustaría crear un objeto UIImage que represente el contexto gráfico. ¿Alguna sugerencia sobre cómo hacer esto?
Tanto de las respuestas a continuación el trabajo. Tenga en cuenta que hay una diferencia funcional entre los dos, que es que la representación de la capa en el contexto de la imagen también representará el fondo de la capa; llamando a drawRect: directamente no (en mi caso, no importa). Voy con el método de renderización de contexto de CALayer debido a las complejidades al llamar a drawRect: directamente (ver http://lists.apple.com/archives/Cocoa-dev/2002/Apr/msg01846.html para más detalles). ¡Gracias! – figelwump