1、用layer
2、自己画个圆
方法一是公认的很耗内存的方式,所以不推荐
/** 这是一种方法, 但是这样做会使APP变卡 */
// 设置图片为圆
self.profile_image.layer.cornerRadius = self.profile_image.width * 0.5;
// 这是让控件里面的内容跟着变化,牛逼!!!
self.profile_image.layer.masksToBounds = YES;
方法二
- 我们给UIImageView写个类目,在需要设置圆形头像的地方调用就ok.
调用
// 设置圆角头像
[self.profile_image setHeader:topic.profile_image];
实现分类,有时候服务器返回的头像可能为空,所有要判断,是空就给占位图片
#import "UIImageView+BSExtension.h"
#import <UIImageView+WebCache.h>
@implementation UIImageView (BSExtension)
// 设置圆角图像
- (void)setHeader:(NSString *)url {
UIImage *placeholder = [[UIImage imageNamed:@"defaultUserIcon"] circleImage];
[self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:placeholder completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// 有可能头像为nil, 如果为nil就给占位图片
self.image = image ? [image circleImage] : placeholder;
}];
}
- 给UIImage写分类,自己画圆
#import "UIImage+Extension.h"
@implementation UIImage (Extension)
/**
* 圆形图片
*/
- (UIImage *)circleImage {
// self.size当前图片的尺寸 , NO代表透明
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
// 获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 添加一个圆
CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
CGContextAddEllipseInRect(ctx, rect);
// 裁剪
CGContextClip(ctx);
// 将图片内容画上去
[self drawInRect:rect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
@end
网友评论