iOS学习开发

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
上一篇 下一篇

猜你喜欢

热点阅读