外部引用
UIImage *placeholder = [UIImage SH_circleImageNamed:@"defaultUserIcon"];
[self.profileImageView sd_setImageWithURL:[NSURL URLWithString:topic.profile_image] placeholderImage:placeholder options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// 图片下载失败,直接返回,按照它的默认做法
if (!image) return;
self.profileImageView.image = [image SH_circleImage];
}];
代码实现
#import <UIKit/UIKit.h>
@interface UIImage (Image)
+ (instancetype)imageOriginalWithName:(NSString *)imageName;
- (instancetype)SH_circleImage;
+ (instancetype)SH_circleImageNamed:(NSString *)name;
@end
#import "UIImage+Image.h"
@implementation UIImage (Image)
+ (instancetype)imageOriginalWithName:(NSString *)imageName
{
UIImage *image = [UIImage imageNamed:imageName];
return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
- (instancetype)SH_circleImage
{
// 1.开启图形上下文
// 比例因素:当前点与像素比例
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
// 2.描述裁剪区域
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
// 3.设置裁剪区域;
[path addClip];
// 4.画图片
[self drawAtPoint:CGPointZero];
// 5.取出图片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// 6.关闭上下文
UIGraphicsEndImageContext();
return image;
}
+ (instancetype)SH_circleImageNamed:(NSString *)name
{
return [[self imageNamed:name] SH_circleImage];
}
@end
网友评论