UIBezierPath类的简单使用
2018-02-02 本文已影响11人
傲视苍穹
UIBezierPath 是对 CGPathRef 的封装。创建矢量图形时,拆解成一或多条线段,拼接起来,每条线段的终点都是下一条线段的起点。
1. 创建一个 UIBezierPath 对象
2. 用 moveToPoint: 设置初始线段的起点
3. 添加线段,定义一或多个子路径
4. 修改 UIBezierPath 的绘图相关的属性,比如stroke path的属性 lineWidth 和 lineJoinStyle , filled path的属性 usesEvenOddFillRule。
如果是矩形或者椭圆之类的特殊图形,可以不用第2步。
UIBezierPath 包含了几个特殊形状的类方法,很容易使用
// 创建矩形
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect
// 创建圆角矩形
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius
// 创建矩形内切圆
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect
// 创建弧形
+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
除了这些闭合的特殊路径,也有一些方法用来添加子路径
// 添加直线
- (void)addLineToPoint:(CGPoint)point
// 添加弧形线段
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
// 添加二阶贝塞尔曲线
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
// 添加三阶贝塞尔曲线
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2