##使用UIBezierPath貝塞爾曲線配合CAShapeLayer摳圖app
###系統提供的UIBezierPath構造方法code
先來看看構造方法列表,以及構造出來的形狀,具體詳見後面的示例及圖片。圖片
一、矩形it
+ (instancetype)bezierPathWithRect:(CGRect)rect;
方法
二、內切圓,即橢圓im
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
img
三、圓角矩形di
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius
view
,可設置圓角的半徑
vi
四、部分圓角的矩形
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
* rect: 矩形frame * corners: 要畫成圓角的部位 * cornerRadii: 圓角的大小
五、圓弧
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
* center: 圓心座標 * radius: 圓的半徑 * startAngle: 起點角度 * endAngle: 終點角度 * clockwise: 是否順時針
六、指定路徑
+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;
###配合CAShapeLayer
利用CAShapeLayer,能畫出各類形狀,只須要將UIBezierPath的CGPath賦予CAShapeLayer的path便可。
####代碼示例
// 要摳的透明區域位置 CGRect cutFrame = CGRectMake(0, 200, self.view.bounds.size.width, 400); UIBezierPath *cutPath1 = [UIBezierPath bezierPathWithRect:cutFrame];//圖1 - 普通矩形 /* UIBezierPath *cutPath2 = [UIBezierPath bezierPathWithRoundedRect:cutFrame cornerRadius:20];//圖2 - 圓角爲20的圓角矩形 UIBezierPath *cutPath3 = [UIBezierPath bezierPathWithRoundedRect:cutFrame byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(20, 20)];//圖3 - 左上和右上爲圓角20的部分圓角矩形 UIBezierPath *cutPath4 = [UIBezierPath bezierPathWithOvalInRect:cutFrame];//圖4 - 內切圓(橢圓) */ // 要摳透明區域的原圖 CGRect viewFrame = self.view.bounds; UIBezierPath *viewPath = [UIBezierPath bezierPathWithRect:viewFrame]; // 調用bezierPathByReversingPath,進行路徑反轉,纔會產生摳圖效果 [viewPath appendPath:[cutPath1 bezierPathByReversingPath]]; // 配合CAShapeLayer,調用layer(此layer必須是第一層,不能嵌套)的setMask方法設置遮罩層 CAShapeLayer *shapeLayer = [CAShapeLayer layer]; shapeLayer.path = viewPath.CGPath; [self.view.layer setMask:shapeLayer];
####效果圖
#####圖1 - 普通矩形
#####圖2 - 圓角爲20的圓角矩形
#####圖3 - 左上和右上爲圓角20的部分圓角矩形
#####圖4 - 內切圓(橢圓)