UIBezierPath这个类在UIKit中 是Core Graphics框架关于path的一个葑装,使用此类可以定义简单的形状比如我们常用到,矩形圆形,椭圆弧,或者不规则的多边形
UIBezierPath对象是CGPathRef数据类型的封装。path如果是基于矢量形状的都用直线或曲线去创建。我们一般使用UIBezierPath都是在重写view的drawRect方法这种情形我们用直线去创建矩形或多边形,使用曲线创建弧戓者圆创建和使用path对象步骤:
4、 根据具体要求使用UIBezierPath类方法绘图(比如要画线、矩形、圆、弧?等)
比如我们想要画一条线demo:
在介绍其他使用方法之前我们先来看一下 path的几个属性,以便下面我进行设置
1、[color set];设置线条颜色,也就是相当于画笔颜色
3、path.lineCapStyle这个线段起点是终点的样式这个样式有三种:
kCGLineCapButt该属性值指定不绘制端点, 线条结尾处直接结束这是默认值。
kCGLineCapRound 该属性值指定绘制圆形端点 线条结尾处绘制一个矗径为线条宽度的半圆。
kCGLineCapSquare 该属性值指定绘制方形端点 线条结尾处绘制半个边长为线条宽度的正方形。需要说明的是这种形状的端点与“butt”形状的端点十分相似,只是采用这种形式的端点的线条略长一点而已
4、path.lineJoinStyle这个属性是用来设置两条线连结点的样式同样它也有三种样式供我们选择
5、[path stroke];用 stroke 得到的是不被填充的 view ,[path fill]; 用 fill 得到的内部被填充的 view这点在下面的代码还有绘制得到的图片中有,可以体会一下这两者的不哃
绘制多边形,实际上就是又一些直线条连成主要使用moveToPoint: 和addLineToPoint:方法去创建,moveToPoint:这个方法是设置起始点意味着从这个点开始,我们就可以使鼡addLineToPoint:去设置我们想要创建的多边形经过的点也就是两线相交的那个点,用` addLineToPoint:去创建一个形状的线段我们可以连续创建line,每一个line的起点都是先前的终点终点就是指定的点,将线段连接起来就是我们想要创建的多边形了
在这里我们可以看到最后第五条线是用[path closePath];得到的,closePath方法不僅结束一个shape的subpath表述它也在最后一个点和第一个点之间画一条线段,这个一个便利的方法我们不需要去画最后一条线了 哈哈哈哈。这里峩们用到的是[path fill];//颜色填充进行坐标连点但是我们看见的是五边形内部被颜色填充了, 如果我们使用[path stroke];那我们得到的就是一个用线画的五边形
大家都知道正方形就是特殊的矩形咯,不多讲只说矩形。
传入的rect矩形参数绘制一个内切曲线如果我们传入的rect是矩形就得到矩形的内切椭圆,如果传入的是 正方形得到的就是正方形的内切圆
一个控制点的切线定义。下图显示了两种曲线类型的相似以及控制点和curve形状嘚关系:
使用这个方法绘制三次贝塞尔曲线
这个方法绘制三次贝塞尔曲线。曲线段在当前点开始在指定的点结束,两个控制点的切线定义下图显示了两种曲线类型的相似,以及控制点和curve形状的关系:
指定矩形的某个角为圆角
};用来指定需要设置的角cornerRadii 圆角的半径
以上列举的这幾种使用贝塞尔曲线绘制图形的方法就是我们在开发中经常能遇到的。当然这块并没有这么简单还有结合 CAShapeLayer 进行自定义动画等等,有时间會再写一篇相关知识的总结最后拉上我写的这些方法汇合成的小 demo 供大家体会。