// block:异步执行完成之后,通过参数回调通知调用方结果
- (void)yy_circleImageWithSize:(CGSize)size fillColor:(UIColor *)color completion:(void (^)(UIImage *image))completionBlock {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 利用绘图,建立上下文
UIGraphicsBeginImageContextWithOptions(size, YES, 0);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
// 设置填充颜色
[color setFill];
UIRectFill(rect);
// 利用 贝塞尔路径 裁切效果
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
[path addClip];
// 绘制图像
[self drawInRect:rect];
// 取得结果
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
// 关闭上下文
UIGraphicsEndImageContext();
// 完成回调
dispatch_async(dispatch_get_main_queue(), ^{
if (completionBlock) {
completionBlock(result);
}
});
});
}