Agrega esquinas networkingondeadas a UIImage?

Sé que es posible tener esquinas networkingondeadas en objects como UIImageView (lo he hecho antes). Pero en este caso, necesito tener mi UIImage cuadrado para tener esquinas networkingondeadas. Sé que es más difícil que hacerlo con un object, pero necesito esto específicamente para el UIImage.

¿Alguien puede compartir un método que no es estático y se puede implementar en una class que ya hice?

Debo hacer esto a un UIImage a less que sea posible agregar bordes networkingondeados a un CCSprite.

¡Gracias!

Edit2:

void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight) { float fw, fh; if (ovalWidth == 0 || ovalHeight == 0) { CGContextAddRect(context, rect); return; } CGContextSaveGState(context); CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect)); CGContextScaleCTM (context, ovalWidth, ovalHeight); fw = CGRectGetWidth (rect) / ovalWidth; fh = CGRectGetHeight (rect) / ovalHeight; CGContextMoveToPoint(context, fw, fh/2); CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); CGContextClosePath(context); CGContextRestoreGState(context); } -(UIImage *)makeRoundCornerImage : (UIImage*) img : (int) cornerWidth : (int) cornerHeight { UIImage * newImage = nil; if( nil != img) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int w = img.size.width; int h = img.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); CGContextBeginPath(context); CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height); addRoundedRectToPath(context, rect, cornerWidth, cornerHeight); CGContextClosePath(context); CGContextClip(context); CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); CGImageRef imageMasked = CGBitmapContextCreateImage(context); CGContextRelease(context); CGColorSpaceRelease(colorSpace); [img release]; newImage = [[UIImage imageWithCGImage:imageMasked] retain]; CGImageRelease(imageMasked); [pool release]; } return newImage; } 

Use https://stackoverflow.com/a/8125604/412916 para recortar con un UIBezierPath en su lugar. Es mas simple

Usando el código publicado anteriormente desde http://blog.sallarp.com/iphone-uiimage-round-corners/

 // rounded corner 10x10 UIImage *original = [UIImage imageNamed:@"original.png"]; UIImage *rounded = [self makeRoundCornerImage:original :10 :10];