IOS, как очистить контекстную графику - PullRequest
5 голосов
/ 15 марта 2012

В моем приложении есть метод, который рисует PDF в контекст:

 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, страница) метода drawLayer?Я пробовал:

//self.view.transform = CGAffineTransformIdentity;

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

//CGContextClearRect(ctx, layer.bounds);

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

Ответы [ 2 ]

12 голосов
/ 07 января 2013
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, self.bounds);
4 голосов
/ 15 марта 2012

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

CGContextFlush(ctx);
...