把iOS應用里邊的頭像或者照片裁剪成圓角
在項目里,經常會用到圓角的圖片,把寫的分類分享給大家
創建一個UIImage的分類,把代碼粘過去就OK
#import <UIKit/UIKit.h>@interface UIImage (DY)
- (instancetype)circleImageWithName:(NSString )name borderWidth:(CGFloat)borderWidth borderColor:(UIColor )borderColor;
@end
import "UIImage+DY.h"
@implementation UIImage (DY)
(instancetype)circleImageWithName:(NSString )name borderWidth:(CGFloat)borderWidth borderColor:(UIColor )borderColor { // 1.加載原圖 UIImage *oldImage = [UIImage imageNamed:name];
// 2.開啟上下文 CGFloat imageW = oldImage.size.width + 2 borderWidth; CGFloat imageH = oldImage.size.height + 2 borderWidth; CGSize imageSize = CGSizeMake(imageW, imageH); UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
// 3.取得當前的上下文 CGContextRef ctx = UIGraphicsGetCurrentContext();
// 4.畫邊框(大圓) [borderColor set]; CGFloat bigRadius = imageW 0.5; // 大圓半徑 CGFloat centerX = bigRadius; // 圓心 CGFloat centerY = bigRadius; CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI 2, 0); CGContextFillPath(ctx); // 畫圓
// 5.小圓 CGFloat smallRadius = bigRadius - borderWidth; CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0); // 裁剪(后面畫的東西才會受裁剪的影響) CGContextClip(ctx);
// 6.畫圖 [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];
// 7.取圖 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 8.結束上下文 UIGraphicsEndImageContext();
return newImage; }
@end</pre>