2012-03-15 22 views
5

W moim app mam metodę, która rysuje pdf do kontekstu:iOS Jak wyczyścić grafika kontekst

CGPDFPageRef page = CGPDFDocumentGetPage(pdf, index + 1); 

CGAffineTransform transform = aspectFit(CGPDFPageGetBoxRect(page, kCGPDFTrimBox), 
                  CGContextGetClipBoundingBox(ctx)); 

CGContextConcatCTM(ctx, transform); 

CGContextDrawPDFPage(ctx, page); 

Teraz w drawLayer, która jest wywoływana podczas powiększania, zrobić niezbędne transformacje i zadzwonić ponownie CGContextDrawPDFPage(ctx, page);

Co się dzieje, że powiększony PDF jest rysowany na pierwszym pliku pdf, problem polega na tym, że na konkretnej stronie z tekstem pojawia się tylny i niewyraźny plik PDF. To dziwne, myślałem, że strona pdf ma białe tło, a jeśli tak się stanie to dlatego, że powiększony PDF na górze ma przezroczyste tło.

Teraz, aby rozwiązać ten problem, jak mogę usunąć kontekst tuż przed CGContextDrawPDFPage (ctx, page) metody drawLayer? Próbowałem:

//self.view.transform = CGAffineTransformIdentity; 

//CGAffineTransform transform = CGAffineTransformIdentity; 
//CGContextConcatCTM(ctx, transform); 

//CGContextClearRect(ctx, layer.bounds); 

Nic nie działa ... dzięki z góry

+0

Twoje pytanie sugeruje, że pierwszy kontekst nie jest tym samym kontekście, jak używać w 'drawLayer:'. W jaki sposób tworzysz oryginalny ctx, kiedy w niego wciągasz i co robisz później? –

Odpowiedz

4

Próbowałaś do spłukiwania kontekst jak poniżej?

CGContextFlush(ctx); 
11
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClearRect(context, self.bounds);