把iOS应用里边的头像或者照片裁剪成圆角

jopen 10年前

在项目里,经常会用到圆角的图片,把写的分类分享给大家

创建一个UIImage的分类,把代码粘过去就OK

 

#import <UIKit/UIKit.h>    @interface UIImage (DY)    + (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;    @end    *****************************************    #import "UIImage+DY.h"    @implementation UIImage (DY)    + (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor  {      // 1.加载原图      UIImage *oldImage = [UIImage imageNamed:name];            // 2.开启上下文      CGFloat imageW = oldImage.size.width + 2 * borderWidth;      CGFloat imageH = oldImage.size.height + 2 * borderWidth;      CGSize imageSize = CGSizeMake(imageW, imageH);      UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);            // 3.取得当前的上下文      CGContextRef ctx = UIGraphicsGetCurrentContext();            // 4.画边框(大圆)      [borderColor set];      CGFloat bigRadius = imageW * 0.5; // 大圆半径      CGFloat centerX = bigRadius; // 圆心      CGFloat centerY = bigRadius;      CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);      CGContextFillPath(ctx); // 画圆            // 5.小圆      CGFloat smallRadius = bigRadius - borderWidth;      CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);      // 裁剪(后面画的东西才会受裁剪的影响)      CGContextClip(ctx);            // 6.画图      [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];            // 7.取图      UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();            // 8.结束上下文      UIGraphicsEndImageContext();            return newImage;  }    @end