2009-02-04 12 views
15

Nel mio progetto iPhone, ho un UIView dove ho implementare il metodo drawRect:CGContext - c'è un modo per ripristinare il contesto attuale

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

All'interno del metodo che faccio un sacco di disegno linee, immagini e testi che utilizzano questo contesto. Il problema è che quando riutilizzo questa vista, il contesto non viene ripristinato. C'è un metodo che posso chiamare per resettare il contesto in qualche modo?

+0

Che cosa si intende per "azzerare il contesto"? –

+0

Voglio dire che quando la mia vista va a disegnare di nuovo, è tutta straziata, come se ricordi cose come dove ho spostato l'ultima cosa a – rustyshelf

risposta

15

È possibile controllare CGContextSaveGState (contesto) e CGContextRestoreGState (contesto). Ti lasceranno spingere e far apparire lo stato attuale del contesto.

Se la visualizzazione viene "storpiata", controlla l'impostazione ContentMode della tua vista.

1

È inoltre possibile utilizzare CGContextClearRect(context, CGRectMake(0, 0, width, height));

+1

Questo riempie il contesto con un colore chiaro, ma non ripristina alcuna informazione sullo stato del contesto (come ritaglio, ecc.) – pauln

Problemi correlati