2012-03-15 20 views
5

En mi aplicación tengo un método que dibuja un PDF en un contexto:IOS, cómo borrar los gráficos de contexto

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

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

CGContextConcatCTM(ctx, transform); 

CGContextDrawPDFPage(ctx, page); 

Ahora en drawLayer, que se llama cuando se hace zoom, hago las transformaciones necesarias y llamar de nuevo CGContextDrawPDFPage(ctx, page);

Lo que sucede es que un pdf ampliado se dibuja sobre el primer pdf, el problema es que en una página en particular con solo texto, se muestra la parte posterior y el PDF borroso. Eso es extraño, pensé que la página en pdf tenía fondo blanco y si esto sucede es porque el pdf ampliado tiene un fondo transparente.

Ahora, para resolver esto, ¿cómo puedo borrar el contexto justo antes de CGContextDrawPDFPage (ctx, page) del método drawLayer? Probé:

//self.view.transform = CGAffineTransformIdentity; 

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

//CGContextClearRect(ctx, layer.bounds); 

Nada funciona ... gracias de antemano

+0

Su pregunta sugiere que el primer contexto no es el mismo contexto que se utiliza en 'drawLayer:'. ¿Cómo se crea el ctx original, cuándo se dibuja en él, y qué haces con él después? –

Respuesta

4

¿trató de eliminar el contexto de la siguiente manera?

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