UIBezierPath类属于UIKit框架,主要用于绘图中设置绘图的路径。在Core Graphics中,也提供了CGPath类以及CGContext类可以用于绘图。在实际开发中,UIBezierPath类的使用比CGPath类和CGContext类要简单,所以这里重点来学习UIBezierPath类在绘图中的应用。
UIBezierPath类的常用方法如下。UIBezierPath类主要用于创建一个路径对象,因此在UIBezierPath类中提供了创建各种类型路径的方法,例如直线路径、曲线路径等。
实例化一个贝塞尔路径对象:
+ (instancetype)bezierPath;
初始化矩形路径:
+ (instancetype)bezierPathWithRect:(CGRect)rect;
初始化一个圆角的矩形路径:
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
初始化一个圆角的矩形路径(可以设置某一个角为圆角):
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
用法:
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(10, 10)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = self.bounds; maskLayer.path = maskPath.CGPath; self.layer.mask = maskLayer;
初始化椭圆形路径:
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
初始化弧形路径。需要设置四个参数,包括弧形的圆心点、弧度以及起始、终止角度:
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
设置当前绘图所在的点位,即设置画笔当前的位置:
- (void)moveToPoint:(CGPoint)point;
从绘图当前点位绘制一条直线到目标点位:
- (void)addLineToPoint:(CGPoint)point;
从绘图当前点位绘制一条圆弧到目标点位,弧度需要由控制点controlPoint决定:
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
封闭当前的路径:
- (void)closePath;
填充路径所封闭的区域:
- (void)fill;
画线:
- (void)stroke;