UIBezierPath文档记录
UIBezierPath
UIBezierPath是由直线和曲线片段组成的路径,你可以在你自定义的视图中渲染这样的路径。
最初使用这个类来指定路径的几何形状,路径可以定义简单的形状,如矩形、椭圆形和圆弧,或者它们可以定义由直线和曲线片段组成的复杂的多边形,在定义形状之后,你可以使用该类的其他方法在当前绘图上下文中来渲染路径。
UIBezierPath对象将路径的几何形状与渲染期间描述路径的属性相结合,你可以分开的设置它的集合形状和属性,也可以分开的改变它们。在对象按照你希望的方式配置后。你可以告诉它在当前的上下文中进行绘制。因为创建、配置和渲染过程都是不同的步骤,Bézier路径对象可以在代码中轻松重用,你甚至可以使用相同的对象多次渲染相同的形状,可能在连续的绘图调用之间更改渲染选项。
通过操作路径的当前点,可以设置路径的几何形状.当创建一个新的空路径对象时,当前点没有被定义,你需要显示设置。要移动当前点而不绘制路径的一片段,可以使用moveToPoint:方法,所有其他方法都导致向路径添加线段或曲线段。添加新段的方法总是假定您从当前点开始,并以你指定的点为结束点。在添加新段之后,新段的终点自动成为当前点。
单个beqzier路径对象可以包含任意数量的打开或关闭子路径,其中每个子路径表示连接的一系列路径段,调用closePath方法通过将从当前点到子路径中的第一点的直线段相加来关闭子路径,调用moveToPoint:方法结束当前子路径(不关闭它),并设置下一个子路径的起点。Bezier路径对象的子路径共享相同的绘图属性,并且必须作为组来操作。要绘制具有不同属性的子路径,必须将每个子路径放入其自己的UIBezierPath对象中.
配置Bezier路径的几何形状和属性之后,使用stroke和fill方法在当前图形上下文中绘制路径。stroke方法使用当前stroke颜色和bezier 路径对象的属性来跟踪路径的轮廓。类似地,fill方法使用当前fill颜色填充路径所包围的区域。(使用UIColor类设置笔画和填充颜色。)
除了使用bezier路径对象绘制形状之外,还可以使用它定义新的裁剪区域。addClip方法将路径对象表示的形状与图形上下文的当前剪切区域相交,在随后的绘图过程中,只有位于新交叉区域内的内容实际呈现给图形上下文。
创建UIBezierPath Objec
- +bezierPath 创建并返回一个新的UIBezierPath对象。
- +(instancetype)bezierPathWithRect:(CGRect)rect; 创建并返回用矩形路径初始化的新UIBezierPath对象。
- +bezierPathWithOvalInRect: 创建并返回一个新的UIBezierPath对象,该对象用指定矩形中内嵌的椭圆形路径初始化
- +bezierPathWithRoundedRect:cornerRadius: 创建并返回用圆角矩形路径初始化的新UIBezierPath对象。
- +bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:
创建并返回用圆角矩形路径初始化的新UIBezierPath对象。- +bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:创建并返回用圆弧初始化的新UIBezierPath对象。
- +bezierPathWithCGPath: 创建并返回用核心图形路径的内容初始化的新UIBezierPath对象
- -bezierPathByReversingPath创建并返回具有当前路径的反向内容的新的Bezier路径对象。
- -init创建并返回空路径对象
构建路径
- -moveToPoint:将接收者的当前点移动到指定位置。
- -addLineToPoint: 在接收者的路径上附加一条直线。
- -addArcWithCenter:radius:startAngle:endAngle:clockwise:在接收者的路径上附加一个弧
- -addCurveToPoint:controlPoint1:controlPoint2:在接收者路径上附加一个三次Bézier曲线
-addQuadCurveToPoint:controlPoint:在接收者路径上附加一条二次Bézier曲线。
在调用的UIBezierPath路径上上添加一条二次Bézier曲线,该曲线从当前点到指定的结束点,当前点、控制点和终点之间的关联定义了实际曲线。下图显示了一些二次曲线的示例以及基于一些采样点的近似曲线形状。线段的精确曲率涉及到点之间复杂的数学关系,并且在网上有很好的记录。在调用此方法之前,必须设置路径的当前点(使用moveToPoint:方法或通过先前创建的直线或曲线段)。如果路径为空,则此方法不执行任何操作。添加曲线段后,此方法会将当前点更新为“点”中的值。
image.png- -closePath 关闭最近添加的子路径。
- -removeAllPoints 从接收者中删除所有点,有效地删除所有子路径
- -appendPath: 将指定路径对象的内容附加到接收者的路径。
- CGPath 路径的核心图形表示。
- currentPoint图形路径中的当前点。
访问图形特性
- lineWidth路径的线宽
- lineCapStyle划线时路径端点的形状
- lineJoinStyle 被划过的路径的连接段之间的关节形状。
- miterLimit 有助于避免连接线段之间的连接处出现尖峰的限制值
- flatness决定曲线路径段渲染精度的因素
- usesEvenOddFillRule指示奇偶缠绕规则是否用于绘制路径的布尔值。
- -setLineDash:count:phase:设置路径的线条笔划模式
- -getLineDash:count:phase:检索路径的线条笔划模式
绘制路径
- -fill使用当前绘图属性绘制由接收者路径包围的区域。
- -fillWithBlendMode:alpha:使用指定的混合模式和透明度值绘制由接收者路径包围的区域
- -stroke使用当前绘图特性沿接收器者径绘制一条线
- -strokeWithBlendMode:alpha:使用指定的混合模式和透明度值沿接收器路径绘制一条线
剪辑路径
- -addClip将接收者路径包围的区域与当前图形上下文的剪切路径相交,并使生成的形状成为当前剪切路径。
命中检测
- -containsPoint:返回一个布尔值,指示接收者包围的区域是否包含指定点。
- empty一个布尔值,指示路径是否有任何有效元素
- bounds 路径的边框。
应用转换
- -applyTransform:使用指定的仿射变换矩阵变换路径中的所有点
- UIRectCorner矩形的角。