iOS开发 --制作圆形的头像(UIImage)

时间:2021-08-15 23:14:00

    有时候我们的应用需要登录,登录后的用户信息中有用户头像,以前使用的方形图片比较丑陋,现在基本所有的应用都是使用圆形都头像了,但是用户上传上来都图片不一定是圆形的(基本上都不是),这个时候就需要我们程序员来处理这些图片了,处理的方法有两种(根据需求),第一种是只要普通颜色的边框(无边框也可以)且圆形的头像、第二种是需要花纹或者其他图片的边框 且 圆形的头像。

以下为学习者提供的文章,不能用于商业利益。

 

一 、普通颜色的边框(无边框也可以)且圆形的头像

代码:

UIImage * image = [UIImage imageNamed:@"icon_huo"];
UIImageView
* imageV = self.imageView;
imageV.layer.masksToBounds
= YES;
imageV.layer.cornerRadius
=imageV.frame.size.width / 2 ;
/**如果需要边框,请把下面2行注释打开*/
// imageV.layer.borderColor = [UIColor purpleColor].CGColor;
// imageV.layer.borderWidth = 10;
imageV.image= image;

iOS开发 --制作圆形的头像(UIImage)  iOS开发 --制作圆形的头像(UIImage)

二、花纹或者其他图片的边框

为了更好的开发,把制作圆形的头像功能封装起来,首先为UIIamge新建一个Gategory(分类)

UIImage+XG.h 文件
#import <UIKit/UIKit.h>

@interface UIImage (XG)

/**
* @param icon 头像图片名称
* @param borderImage 边框的图片名称
* @param border 边框大小
*
* @return 圆形的头像图片
*/
+ (instancetype)imageWithIconName:(NSString *)icon borderImage:(NSString *)borderImage border:(int)border;
@end
UIImage+XG.m 文件
#import "UIImage+XG.h"

@implementation UIImage (XG)

+ (instancetype)imageWithIconName:(NSString *)icon borderImage:(NSString *)borderImage border:(int)border{
//头像图片
UIImage * image = [UIImage imageNamed:icon];
//边框图片
UIImage * borderImg = [UIImage imageNamed:borderImage];
//
CGSize size = CGSizeMake(image.size.width + border, image.size.height + border);

//创建图片上下文
UIGraphicsBeginImageContextWithOptions(size, NO, 0);

//绘制边框的圆
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(context, CGRectMake(
0, 0, size.width, size.height));

//剪切可视范围
CGContextClip(context);

//绘制边框图片
[borderImg drawInRect:CGRectMake(0, 0, size.width, size.height)];

//设置头像frame
CGFloat iconX = border / 2;
CGFloat iconY
= border / 2;
CGFloat iconW
= image.size.width;
CGFloat iconH
= image.size.height;

//绘制圆形头像范围
CGContextAddEllipseInRect(context, CGRectMake(iconX, iconY, iconW, iconH));

//剪切可视范围
CGContextClip(context);

//绘制头像
[image drawInRect:CGRectMake(iconX, iconY, iconW, iconH)];

//取出整个图片上下文的图片
UIImage *iconImage = UIGraphicsGetImageFromCurrentImageContext();

return iconImage;
}
@end
 

效果:iOS开发 --制作圆形的头像(UIImage)

 

在需要制作圆形头像或图片的地方导入   #import "UIImage+XG.h"

 
UIImage * image = [UIImage imageWithIconName:@"icon_huo" borderImage:@"border" border:40];

self.imageView.image
= image;