UIBezierPath 一些实用
```
// 需要画线的视图
UIView*lineView = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame)- 100, 200, 200)];
lineView.backgroundColor = [UIColororangeColor];
[self.view addSubview:lineView];
// 线的路径
UIBezierPath*linePath = [UIBezierPathbezierPath];
// 起点
[linePath moveToPoint:CGPointMake(20, 20)];
// 其他点
[linePath addLineToPoint:CGPointMake(160, 160)];
[linePath addLineToPoint:CGPointMake(180, 50)];
多边形
[polygonPath closePath];// 添加一个结尾点和起点相同
CAShapeLayer*lineLayer = [CAShapeLayerlayer];
lineLayer.lineWidth = 2;
lineLayer.strokeColor = [UIColorgreenColor].CGColor;
lineLayer.path = linePath.CGPath;
lineLayer.fillColor =nil;// 默认为blackColor
[lineView.layer addSublayer:lineLayer];
2 划 椭圆
// 需要圆视图
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 130,CGRectGetMidY(self.view.frame) - 100, 260, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
UIBezierPath*path = [UIBezierPathbezierPathWithOvalInRect:view.bounds];
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.path = path.CGPath;
pathLayer.fillColor =nil;// 默认为blackColor
[view.layer addSublayer:pathLayer];
3 划圆
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
UIBezierPath*path = [UIBezierPathbezierPathWithOvalInRect:view.bounds];
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.path = path.CGPath;
// [view.layer addSublayer:pathLayer];
// pathLayer.fillColor = nil; // 默认为blackColor
view.layer.mask = pathLayer;// layer 的 mask属性,添加蒙版
4.画圆角矩形
// 需要画圆角矩形
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
UIBezierPath*path = [UIBezierPathbezierPathWithRoundedRect:view.bounds cornerRadius:50];
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.path = path.CGPath;
// pathLayer.fillColor = [UIColor lightGrayColor].CGColor; // 默认为blackColor
// [polygonView.layer addSublayer:polygonLayer];
view.layer.mask = pathLayer;// layer 的 mask属性,添加蒙版
5.画单角的圆角矩形的UIBezierPath相关方法
// 需要圆视图
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
UIBezierPath*path = [UIBezierPathbezierPathWithRoundedRect:view.bounds byRoundingCorners:UIRectCornerTopLeftcornerRadii:CGSizeMake(100, 0)];
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.fillColor =nil;// 默认为blackColor
pathLayer.path = path.CGPath;
[view.layer addSublayer:pathLayer];
6.圆弧
画圆弧的UIBezierPath相关方法
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
center:圆弧的中心,相对所在视图; radius:圆弧半径; startAngle:起始点的角度(相对角度坐标系0); endAngle:结束点的角度(相对角度坐标系0); clockwise:是否为顺时针方向。
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
在原有的线上添加一条弧线 。center:圆弧的中心,相对所在视图; radius:圆弧半径; startAngle:起始点的角度(相对角度坐标系0); endAngle:结束点的角度(相对角度坐标系0); clockwise:是否为顺时针方向。
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
CGPointviewCenter =CGPointMake(view.frame.size.width / 2.0, view.frame.size.height / 2.0);// 画弧的中心点,相对于view
UIBezierPath*path = [UIBezierPathbezierPathWithArcCenter:viewCenter radius:50.0 startAngle:0 endAngle:M_PI_2 clockwise:YES];
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.fillColor =nil;// 默认为blackColor
pathLayer.path = path.CGPath;
[view.layer addSublayer:pathLayer];
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
CGPointviewCenter =CGPointMake(view.frame.size.width / 2.0, view.frame.size.height / 2.0);// 画弧的中心点,相对于view
UIBezierPath*path = [UIBezierPathbezierPath];
[path moveToPoint:CGPointMake(50, 50)];
[path addLineToPoint:CGPointMake(100, 100)];
[path addArcWithCenter:viewCenter radius:50 startAngle:0 endAngle:M_PI clockwise:YES];// 添加一条弧线
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.fillColor =nil;// 默认为blackColor
pathLayer.path = path.CGPath;
[view.layer addSublayer:pathLayer];
折线和弧线构成的曲线
UIView* view = [[UIViewalloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.frame) - 100,CGRectGetMidY(self.view.frame) - 100, 200, 200)];
view.backgroundColor = [UIColororangeColor];
[self.view addSubview:view];
// 线的路径
CGPointviewCenter =CGPointMake(view.frame.size.width / 2.0, view.frame.size.height / 2.0);// 画弧的中心点,相对于view
UIBezierPath*path = [UIBezierPathbezierPath];
[path moveToPoint:CGPointMake(50, 50)];
[path addLineToPoint:CGPointMake(100, 100)];
[path addArcWithCenter:viewCenter radius:50 startAngle:0 endAngle:M_PI clockwise:YES];// 添加一条弧线
CAShapeLayer*pathLayer = [CAShapeLayerlayer];
pathLayer.lineWidth = 2;
pathLayer.strokeColor = [UIColorgreenColor].CGColor;
pathLayer.fillColor =nil;// 默认为blackColor
pathLayer.path = path.CGPath;
[view.layer addSublayer:pathLayer];
```
http://www.cnblogs.com/jaesun/p/iOS-CAShapeLayerUIBezierPath-hua-xian.html