Mi piacerebbe creare un oggetto UIImage dal contesto grafico corrente. Più specificamente, il mio caso d'uso è una vista in cui l'utente può disegnare linee. Possono disegnare in modo incrementale. Dopo aver finito, mi piacerebbe creare una UIImage per rappresentare il loro disegno.Come creare un UIImage dal contesto grafico corrente?
Ecco cosa drawRect: appare come per me, ora:
- (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);
}
... dove _pathArray è di tipo CFArrayRef, ed è popolato ogni volta touchesEnded: viene richiamato. Si noti inoltre che drawRect: può essere richiamato più volte, come l'utente disegna.
Quando l'utente ha terminato, mi piacerebbe creare un oggetto UIImage che rappresenti il contesto grafico. Qualche suggerimento su come fare questo?
Entrambe le risposte qui sotto lavoro. Si noti che esiste una differenza funzionale tra i due, vale a dire che il rendering del livello nel contesto dell'immagine renderà anche lo sfondo del livello; chiamare drawRect: direttamente non (nel mio caso non importa). Vado con l'approccio renderInContext CALayer a causa delle complessità con la chiamata drawRect: direttamente (per ulteriori dettagli, vedere http://lists.apple.com/archives/Cocoa-dev/2002/Apr/msg01846.html). Grazie! – figelwump