一,绘制方法
椭圆 / 圆
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(110, 100, 100, 100)];
绘制矩形
UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(110, 100, 150, 100)];
设置圆角
// 四个圆角
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(110, 100, 150, 100) cornerRadius:50];
// 设置特点圆角
// 圆角size:height值不影响,受width控制
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(110, 100, 300, 300) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(50, 100)];
绘制圆弧
// clockwise YES:顺时针 NO:逆时针
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:self.view.center radius:radius startAngle:startAngle endAngle:endAngle clockwise:NO];
路径中增加一个已有路径
- (void)appendPath:(UIBezierPath *)bezierPath
返回一个翻转已有路径的新路径
- (UIBezierPath *)bezierPathByReversingPath
利用当前绘画属性填充路径封闭范围, 该方法在绘画之前会自动将开放子路径封闭, 填充部分不包含路径本身, 所以对于线宽较大的路径, 填充部分会跟部分路径重合
- (void)fill
利用指定模式填充路径封闭范围, 该方法在绘画之前会自动将开放子路径封闭, 填充部分不包含路径本身, 所以对于线宽较大的路径, 填充部分会跟部分路径重合
- (void)fillWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha
利用当前绘画属性沿着路径画线
- (void)stroke
利用指定模式沿着路径画线
- (void)strokeWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha
曲线闭合方法
[path closePath];
二,绘制属性
路径的填充颜色
- (void)setFill
[[UIColor orangeColor] setFill];
路径的画线颜色
- (void)setStroke
[[UIColor orangeColor] setStroke];
路径的终点形状, 该属性适用于开放路径的起点和终点, 默认为kCGLineCapButt(方形结束, 结束位置正好为精确位置), 其他可选项为kCGLineCapRound(圆形结束, 结束位置超过精确位置半个线宽)和kCGLineCapSquare(方形结束, 结束位置超过精确位置半个线宽)
@property(nonatomic) CGLineCap lineCapStyle
UIBezierPath *path = [UIBezierPath bezierPath];
path.lineCapStyle = kCGLineCapButt;
路径的连接点形状, 默认为kCGLineJoinMiter(全部连接), 其他可选项为kCGLineJoinRound(圆形连接)和kCGLineJoinBevel(斜角连接)
@property(nonatomic) CGLineJoin lineJoinStyle
UIBezierPath *path = [UIBezierPath bezierPath];
path.lineJoinStyle = kCGLineJoinMiter;
三,结合CAShapeLayer使用
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
shapeLayer.path = path.CGPath;
// 填充色
shapeLayer.fillColor = [UIColor blueColor].CGColor;
// 边框色
shapeLayer.strokeColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:shapeLayer];
四,结合动画使用