切圆角头像带白边

来源:互联网 发布:java手机版下载 编辑:程序博客网 时间:2024/04/28 14:16

切圆角头像带白边

////  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
0 0
原创粉丝点击