标签:
原理:开启一个比图片稍大的位图上下文,然后在位图上下文上绘制一个内切圆,最后绘制一个比位图上下文小的图片,并切去边缘。如下图所示。
步骤:
1. 加载原生图片
2. 开启上下文
3. 画大圆并填充路径
4. 设置裁剪区域
5. 绘制图形
6. 获取图片
7. 关闭上下文
代码:
- (void)viewDidLoad {
[super viewDidLoad];
//1.加载原生图片
UIImage *image = [UIImage imageNamed:@"高圆圆"];
//self.imageView.image = image;
//图片的宽度和高度
CGFloat imageWH = image.size.width;
//边界宽度
CGFloat border = 1.5;
//圆环的高度和宽度
CGFloat ovalWH = imageWH + 2 * border;
//2.开启上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(ovalWH, ovalWH), NO, 0);
//3.画大圆
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];
[[UIColor colorWithRed:1.000 green:0.138 blue:0.046 alpha:1.000] set];
[path fill];
//4.设置裁剪区域
UIBezierPath *clipedPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
[clipedPath addClip];
//5.绘制图形
[image drawAtPoint:CGPointMake(border, border)];
//6.获取图片
UIImage *clipedImage = UIGraphicsGetImageFromCurrentImageContext();
//7.关闭上下文
UIGraphicsEndImageContext();
self.imageView.image = clipedImage;
}
原图:
裁剪后的图形:
标签:
原文地址:http://blog.csdn.net/bao_libra/article/details/51355375