2012-03-15 3 views
5

В моем приложении у меня есть метод, который рисует PDF в контексте:IOS, как очистить контекст графики

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

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

CGContextConcatCTM(ctx, transform); 

CGContextDrawPDFPage(ctx, page); 

Сейчас в drawLayer, который вызывается при масштабировании, я необходимые преобразования и снова позвонить CGContextDrawPDFPage(ctx, page);

Что происходит, так это то, что увеличенный pdf рисуется поверх первого pdf, проблема в том, что на конкретной странице с только текстом отображается обратная и размытая pdf. Это странно, я думал, что страница pdf имеет белый фон, и если это произойдет, это связано с тем, что увеличенный pdf сверху имеет прозрачный фон.

Теперь, чтобы решить эту проблему, как я могу очистить контекст прямо перед CGContextDrawPDFPage (ctx, page) метода drawLayer? Я пробовал:

//self.view.transform = CGAffineTransformIdentity; 

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

//CGContextClearRect(ctx, layer.bounds); 

Ничто не работает ... спасибо заранее

+0

Ваш вопрос предполагает, что первый контекст не тот же контекст, как вы используете в 'drawLayer:'. Как вы создаете оригинальный ctx, когда вы рисуете его, и что вы делаете с ним после этого? –

ответ

4

Вы пытались очистить контекст, как показано ниже?

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