2013-09-06 3 views
6

Ich bin auf einen CGContext Zeichnung und unter Verwendung eines CGImageRef-basierten Maske:Wie kann ich die mit einem CGContext verknüpfte Schnittmaske zurücksetzen oder löschen?

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextClipToMask(context, rect, _firstMaskImageRef); 
CGContextSetFillColorWithColor(context, color); 
CGContextFillRect(context, rect); 

Ich habe eine zweite Maske, die ich dann wechseln will:

CGContextClipToMask(context, rect, _secondMaskImageRef); 
CGContextSetFillColorWithColor(context, color); // color has changed FWIW 
CGContextFillRect(context, rect); // as has rect 

Aber schneiden diese die beide Masken anstatt die erste zu ersetzen.

Wie können Sie (wenn möglich) die Schnittmaske für einen CGContext löschen oder zurücksetzen?

Antwort

15

Sie können den Grafikzustand speichern, bevor Sie die Schnittmaske gesetzt und dann danach zurückgesetzt, wie folgt aus: (? 3+)

CGContextSaveGState (context); 
...Set your first clipping mask, fill it, etc. 
CGContextRestoreGState (context); 
...Do other stuff 
0

Spätere Versionen von Swift verwenden Sie die folgende Syntax statt:

context.saveGState() 
// set your clipping mask, etc. 
context.restoreGState() 
// everything's back to normal 
0

die Schnittmaske zurückzustellen, verwenden:

CGContextResetClip(context); 
Verwandte Themen