2009-02-04 11 views
15

W moim projekcie iPhone, Mam UIView gdzie zaimplementować metodę drawRect:CGContext - czy istnieje sposób, aby przywrócić bieżący kontekst

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

Wewnątrz metody robię całą masę rysunek linie, obrazy i teksty wykorzystujące ten kontekst. Problem polega na tym, że gdy ponownie używam tego widoku, kontekst nie zostanie zresetowany. Czy istnieje metoda, którą mogę wywołać, aby jakoś zresetować kontekst?

+0

Co masz na myśli przez "resetowanie kontekstu"? –

+0

To znaczy, że kiedy mój widok idzie zwrócić się ponownie, to wszystko jest zniekształcone, jakby rememebers rzeczy jak, gdzie, kiedy ostatnio przeniósł się coś – rustyshelf

Odpowiedz

15

Możesz chcieć sprawdzić CGContextSaveGState (kontekstowe) i CGContextRestoreGState (kontekstowe). Pozwolą ci popchnąć i pop bieżący stan kontekstu.

Jeśli widok jest coraz „zniekształcone”, sprawdź ustawienia contentMode widoku danych,.

1

Możesz także użyć CGContextClearRect(context, CGRectMake(0, 0, width, height));

+1

ten wypełnia kontekst z jasnym kolorze, ale nie resetuje żadnej informacji o stanie kontekst (takich jak wycinanie itp.) – pauln

Powiązane problemy