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;
}