設置圓形圖片

在ios開發中我們常用imageView.layer.cornerRadius=imageView.bounds.size.width*0.5;imageView.layer.masksToBounds = YES 來設置原型圖片,但是在cell上考慮到性能問題,就通過貝塞爾曲線封裝了一個方法。
首先要給imageView添加一個類別,具體方法和實現如下:

#import "UIImage+Extension.h"

@implementation UIImage (Extension)

- (void)cz_cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completion:(void (^)(UIImage *))completion {

    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        NSTimeInterval start = CACurrentMediaTime();

        // 1. 利用繪圖,建立上下文
        UIGraphicsBeginImageContextWithOptions(size, YES, 0);

        CGRect rect = CGRectMake(0, 0, size.width, size.height);

        // 2. 設置填充顏色
        [fillColor setFill];
        UIRectFill(rect);

        // 3. 利用 貝賽爾路徑 `裁切 效果
        UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];

        [path addClip];

        // 4. 繪製圖像
        [self drawInRect:rect];

        // 5. 取得結果
        UIImage *result = UIGraphicsGetImageFromCurrentImageContext();

        // 6. 關閉上下文
        UIGraphicsEndImageContext();

        NSLog(@"%f", CACurrentMediaTime() - start);

        // 7. 完成回調
        dispatch_async(dispatch_get_main_queue(), ^{
            if (completion != nil) {
                completion(result);
            }
        });
    });
}

@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章