Imagen que aparece pixelada

Esto es lo que estoy tratando de hacer

  1. Cree una vista de UIImage.
  2. Hazle un dibujo
  3. Presione un botón de compartir para compartir la imagen con los dibujos en ella.

Mi código funciona perfecto en iPad y iPhone. El problema viene con la pantalla retina. Entonces, supongo que alguna escala no se maneja correctamente, pero no estoy seguro de qué estoy haciendo mal. este es mi codigo

// Create the UIImageView named centerCanvas
// Do the drawing
CGPoint origin = centerCanvas.frame.origin;
CGSize  size   = centerCanvas.frame.size;
CGSize screenSize = [self returnScreenSize];
CGRect  rect   = CGRectMake(origin.x, origin.y, size.width, size.height);
UIGraphicsBeginImageContext(screenSize);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], rect);
[shareView setImage:[UIImage imageWithCGImage:imageRef]]; 


-(CGSize) returnScreenSize
{
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    CGFloat screenScale = [[UIScreen mainScreen] scale];
    CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale,screenBounds.size.height * screenScale);
    return screenSize;
}

preguntado el 29 de junio de 12 a las 19:06

1 Respuestas

Intenta usar

    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);

en lugar del antiguo UIGraphicsBeginImageContext, que usa un factor de escala (tercer argumento anterior) igual a 1. Al dar 0.0 como factor de escala, obtiene un factor de escala para su pantalla actual. Echa un vistazo a la referencia.

Respondido el 29 de junio de 12 a las 19:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.