chicos, este es mi código:CGContext y Retina Display
- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx {
//background
CGContextSetFillColorWithColor(ctx, [[UIColor colorWithRed:((float)238/255.0f) green:((float)233/255.0f) blue:((float)215/255.0f) alpha:1] CGColor]);
CGContextFillRect(ctx, CGRectInset(leavesView.bounds, 0, 0));
//text
CGContextSetTextDrawingMode(ctx, kCGTextFill);
CGContextSetTextMatrix(ctx, CGAffineTransformMake(1.0, 0.0, 0.0, 1.0, 0.0, 0.0));
CGContextSetFillColorWithColor(ctx, [[UIColor blackColor] CGColor]);
UIGraphicsPushContext(ctx);
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, 0.1f, leavesView.bounds.size.height);
CGContextScaleCTM(ctx, 1.0f, -1.0f);
CGRect textRect = CGRectMake(5, 5, leavesView.bounds.size.width-10, leavesView.bounds.size.height-10);
if (pages.count > 0 && pages.count-1 >= index) {
[[pages objectAtIndex:index] drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];
}
CGContextRestoreGState(ctx);
UIGraphicsPopContext();
}
Funciona perfecto en el iPhone 2G, 3G, 3GS, pero en los nuevos modelos no tengo problemas.
En la retina, el texto no se dibuja al doble de la resolución, como en el estándar.
¿Tiene alguna idea?
¡oh hombre! Salvaste mi día. Realmente no tan obvio. – orkenstein
He subclasificado el CALayer y tuve que hacer esto en el método init. En el método drawWithContext arrojaba un error de solo lectura. –