Dibujo PDF borroso en comparación con CATiledLayer

En mi aplicación estoy creando un lector de PDF. Para satisfacer el performance, dibujo una vista en la escala pnetworkingeterminada. Esta vista no está basada en CATiledLayer. Cuando el usuario amplía un poco, superpongo esta vista con una CATiledLayer que ofrece una image mucho más nítida y un bajo uso de memory en casos de uso normal.

Ahora el problema es que en el estado pnetworkingeterminado (cuando se muestra la vista CALayer) la image está saliendo un poco borrosa. Cuando trato de acercar un poco y CATiledLayer entra, el mismo text y todo se vuelve agudo.

Aquí está el código de la vista CATiledLayer (que muestra la image nítida y el text como debería ser):

- (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)context{ CGPDFPageRef drawPDFPageRef = NULL; CGPDFDocumentRef drawPDFDocRef = NULL; @synchronized(self) { if (_PDFDocRef==nil) { NSLog(@"PDF NIL"); _PDFDocRef = [ShanetworkingPDFDocRef shanetworkingInstanceForUrl:_fileURL andPhrase:_password]; _PDFPageRef = CGPDFDocumentGetPage(_PDFDocRef, _page); } drawPDFDocRef = _PDFDocRef; drawPDFPageRef = _PDFPageRef; } if (drawPDFPageRef != NULL) { CGContextTranslateCTM(context, 0.0f, self.bounds.size.height); CGContextScaleCTM(context, 1.0f, -1.0f); CGAffineTransform transform = CGPDFPageGetDrawingTransform(drawPDFPageRef, kCGPDFCropBox, layer.bounds, 0, true); CGContextConcatCTM(context, transform); CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); CGContextSetInterpolationQuality(context, kCGInterpolationDefault); CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f); CGContextFillRect(context, CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFBleedBox)); CGContextDrawPDFPage(context, drawPDFPageRef); } //CGPDFPageRelease(drawPDFPageRef); CGPDFDocumentRelease(drawPDFDocRef); } 

Aquí está el código de la vista Normal (se muestra bien pero la image no tiene la misma calidad que CATiledLayer):

 - (void) drawRect:(CGRect)rect { [super drawRect:rect]; CGPDFPageRef drawPDFPageRef = NULL; CGPDFDocumentRef drawPDFDocRef = NULL; @synchronized(self) { drawPDFDocRef = CGPDFDocumentRetain(_PDFDocRef); drawPDFPageRef = CGPDFPageRetain(_PDFPageRef); } // get the page reference CGPDFPageRef page = drawPDFPageRef; CGContextRef context = UIGraphicsGetCurrentContext(); // white background // transformation/-lation CGContextTranslateCTM(context, 0.0, self.bounds.size.height); CGContextScaleCTM(context, 1.00f, -1.00f); CGContextConcatCTM(context, CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, self.bounds, 0, true)); CGContextSetInterpolationQuality(context, kCGInterpolationDefault); CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f); CGContextFillRect(context, CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFBleedBox)); CGContextDrawPDFPage(context, page); CGPDFPageRelease(drawPDFPageRef); CGPDFDocumentRelease(drawPDFDocRef); } 

¿Has intentado configurar el factor de escala de contenido de la vista después de realizar el zoom?

En su UIScrollViewDelegate, haría:

 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { [view setContentScaleFactor:scale]; }