ios uikit uiimage antialiasing

ios - DrawInrect de UIImage: suaviza la imagen



uikit antialiasing (1)

Estoy tratando de dibujar una imagen usando el método drawInRect: UIImage . Aquí está el código:

UIImage *image = [UIImage imageNamed:@"OrangeBadge.png"]; UIGraphicsBeginImageContext(image.size); [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

El problema es que la imagen resultante es borrosa. Aquí está la imagen resultante (en el lado derecho) en comparación con la imagen de origen (en el lado izquierdo):

He intentado tanto CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), NO) CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO) pero esto no resolvió el problema.

¿Algunas ideas?

Gracias por adelantado.


Si está desarrollando en un dispositivo de retina, posiblemente el problema esté relacionado con la resolución de su contexto de gráficos. ¿Lo intentarías con:

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0f);

Esto permitirá la resolución de la retina. Además, su imagen debe estar disponible con una resolución de 2x para que esto funcione.

Si también desea admitir dispositivos que no sean de retina, puede utilizar:

if ([UIScreen instancesRespondToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f); } else { UIGraphicsBeginImageContext(newSize); }