iphone ios uiimage rounded-corners smooth

iphone - UIImage con esquinas redondeadas lisas en cuarzo



ios rounded-corners (1)

Solo estoy probando el siguiente código para redondear las esquinas en UIImage:

- (UIImage *)makeRoundedImage:(UIImage *)image radius:(float)radius; { CALayer *imageLayer = [CALayer layer]; imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height); imageLayer.contents = (id) image.CGImage; imageLayer.masksToBounds = YES; imageLayer.cornerRadius = radius; UIGraphicsBeginImageContext(image.size); [imageLayer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return roundedImage; }

Me parece bien a menos que mires de cerca a la imagen generada. Las esquinas no son lisas. ¿Cómo puedo hacer que las esquinas sean más suaves / suaves?

EDITAR:

Imagen procesada con esquinas redondeadas en cuarzo:

Como puede ver, la esquina no es lisa.

Esta es la versión con la esquina de UIImageViewRadius que es mucho más suave.

¿Dónde está la captura?


Aquí está la categoría de UIImage:

- (UIImage *) imageWithRoundedCornersRadius: (float) radius { // Begin a new image that will be the new image with the rounded corners UIGraphicsBeginImageContextWithOptions(self.size, NO, 0); // Add a clip before drawing anything, in the shape of an rounded rect CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius] addClip]; // Draw your image [self drawInRect:rect]; // Get the image, here setting the UIImageView image UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext(); // Lets forget about that we were drawing UIGraphicsEndImageContext(); return roundedImage; }