切圆角头像带白边
//
// UIImage+CircleImage.m
// iuReader
//
// Created by MrWu on 2017/3/27.
// Copyright © 2017年 com.AiYouHuYu. All rights reserved.
//
#import "UIImage+CircleImage.h"
@implementation UIImage (CircleImage)
- (UIImage *)drawCircleImageInCorner {
CGFloat side = MIN(self.size.width, self.size.height);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(side, side), false, [UIScreen mainScreen].scale);
//设置圆形
// CGContextAddPath(UIGraphicsGetCurrentContext(),[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, side, side)].CGPath);
//裁剪四个角
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, side, side) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight | UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(10, 10)];
CGContextAddPath(UIGraphicsGetCurrentContext(), maskPath.CGPath);
CGContextClip(UIGraphicsGetCurrentContext());
CGFloat marginX = -(self.size.width - side) / 2.f;
CGFloat marginY = -(self.size.height - side) / 2.f;
[self drawInRect:CGRectMake(marginX, marginY, self.size.width, self.size.height)];
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke);
UIImage *output = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return output;
}
- (UIImage *)drawCircleImageInCircle {
CGFloat side = MIN(self.size.width, self.size.height);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(side, side), false, [UIScreen mainScreen].scale);
//设置圆形
CGContextAddPath(UIGraphicsGetCurrentContext(),[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, side, side)].CGPath);
CGContextClip(UIGraphicsGetCurrentContext());
CGFloat marginX = -(self.size.width - side) / 2.f;
CGFloat marginY = -(self.size.height - side) / 2.f;
[self drawInRect:CGRectMake(marginX, marginY, self.size.width, self.size.height)];
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke);
UIImage *output = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return output;
}
/** 画图片边的圈 */
- (UIImage *)drawCircleImageInCircleColor:(UIColor *)color withMargin:(CGFloat)margin {
CGFloat side = MIN(self.size.width, self.size.height);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(side, side), false, [UIScreen mainScreen].scale);
//设置圆形
CGContextAddPath(UIGraphicsGetCurrentContext(),[UIBezierPath bezierPathWithArcCenter:CGPointMake(side*0.5, side*0.5) radius:side*0.5 startAngle:0 endAngle:M_PI * 2 clockwise:YES].CGPath);
CGContextClip(UIGraphicsGetCurrentContext());
CGFloat marginX = -(self.size.width - side) / 2.f;
CGFloat marginY = -(self.size.height - side) / 2.f;
[self drawInRect:CGRectMake(marginX, marginY, self.size.width, self.size.height)];
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke);
UIImage *output = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//
CGFloat margSide = side*0.5 + margin;
UIGraphicsBeginImageContextWithOptions(CGSizeMake(margSide*2, margSide*2), false, [UIScreen mainScreen].scale);
CGContextRef ref = UIGraphicsGetCurrentContext();
CGContextAddArc(ref, margSide, margSide, margSide, 0, M_PI*2, YES);
CGContextClip(ref);
CGContextSetFillColorWithColor(ref, color.CGColor);
CGContextFillRect(ref, CGRectMake(0, 0, margSide*2, margSide*2));
CGContextDrawImage(ref,CGRectMake(margin, margin, side, side), output.CGImage);
CGContextStrokePath(ref);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// CGContextRelease(ref);
return image;
}
@end