UIImage with rounded corners UIImage with rounded corners xcode xcode

UIImage with rounded corners


// Get your image somehowUIImage *image = [UIImage imageNamed:@"image.jpg"];// Begin a new image that will be the new image with the rounded corners // (here with the size of an UIImageView) UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, [UIScreen mainScreen].scale); // Add a clip before drawing anything, in the shape of an rounded rect  [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds                         cornerRadius:10.0] addClip]; // Draw your image[image drawInRect:imageView.bounds]; // Get the image, here setting the UIImageView image  imageView.image = UIGraphicsGetImageFromCurrentImageContext(); // Lets forget about that we were drawing  UIGraphicsEndImageContext();

Try moving with this code, as far as I can remember I used this a while back that makes an image with rounded corners that you can move around into the targets. But it seemed to scale fine...


Rohan's answer is a great one. If anyone is having any probs refactoring it to work in their projects here is a neat refactor that might hopefully help some newer programmers:

+ (UIImage *)imageWithRoundedCornersSize:(float)cornerRadius usingImage:(UIImage *)original{        UIImageView *imageView = [[UIImageView alloc] initWithImage:original];    // Begin a new image that will be the new image with the rounded corners    // (here with the size of an UIImageView)    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);    // Add a clip before drawing anything, in the shape of an rounded rect    [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds                            cornerRadius:cornerRadius] addClip];    // Draw your image    [original drawInRect:imageView.bounds];    // Get the image, here setting the UIImageView image    imageView.image = UIGraphicsGetImageFromCurrentImageContext();    // Lets forget about that we were drawing    UIGraphicsEndImageContext();    return imageView.image;}


There is more optimized memory version of solution of Charlie Seligman. You do not need use UIImageView for this purpose.

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

You can get the round image by specifying cornerRadius equal increased image size twice (image.size.width * 2).