热更新demo

UIImage+wiRoundedRectImage.m 3.8KB

    // // UIImage+wiRoundedRectImage.m // ThePaperHD // // Created by scar1900 on 15/1/5. // Copyright (c) 2015年 scar1900. All rights reserved. // #import "UIImage+wiRoundedRectImage.h" @implementation UIImage (wiRoundedRectImage) static 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); // Start at lower right corner CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right CGContextClosePath(context); CGContextRestoreGState(context); } + (UIImage*)cutImageWithRadius:(int)radius withImage:(UIImage *)image { UIGraphicsBeginImageContext(CGSizeMake(28, 28)); CGContextRef gc = UIGraphicsGetCurrentContext(); float x1 = 0.; float y1 = 0.; float x2 = x1+28; float y2 = y1; float x3 = x2; float y3 = y1+28; float x4 = x1; float y4 = y3; radius = radius*2; CGContextMoveToPoint(gc, x1, y1+radius); CGContextAddArcToPoint(gc, x1, y1, x1+radius, y1, radius); CGContextAddArcToPoint(gc, x2, y2, x2, y2+radius, radius); CGContextAddArcToPoint(gc, x3, y3, x3-radius, y3, radius); CGContextAddArcToPoint(gc, x4, y4, x4, y4-radius, radius); CGContextClosePath(gc); CGContextClip(gc); CGContextTranslateCTM(gc, 0, 28); CGContextScaleCTM(gc, 1, -1); CGContextDrawImage(gc, CGRectMake(0, 0, 28, 28), image.CGImage); UIImage *newimage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newimage; } + (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r { // the size of CGContextRef // TPLOG(@"开始做圆角图片"); int w = size.width; int h = size.height; UIImage *img = image; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); CGRect rect = CGRectMake(0, 0, w, h); CGContextBeginPath(context); addRoundedRectToPath(context, rect, r, r); CGContextClosePath(context); CGContextClip(context); CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); CGImageRef imageMasked = CGBitmapContextCreateImage(context); img = [UIImage imageWithCGImage:imageMasked]; CGContextRelease(context); CGColorSpaceRelease(colorSpace); CGImageRelease(imageMasked); return img; } + (UIImage*) circleImage:(UIImage*) image withParam:(CGFloat) inset { UIGraphicsBeginImageContext(image.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(context, 0); CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height); CGContextAddEllipseInRect(context, rect); CGContextClip(context); [image drawInRect:rect]; CGContextAddEllipseInRect(context, rect); CGContextStrokePath(context); UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newimg; } @end