1)UIBezierPath(贝塞尔曲线)
在自定义View的时候,可以使用贝塞尔曲线(UIBezierPath)类来实现直线和曲线的绘制和渲染,起初是使用贝塞尔曲线是定义路径的几何形状。贝塞尔曲线可以定义矩形、椭圆和圆形等简单形状或者是融合直线和曲线的多边形,并且可以调用该类中的一些方法在当前上下文中渲染定义完的路径形状。
1:画矩形
+(instancetype)bezierPathWithRect:(CGRect)rect;
rect: 矩形的Frame
- (void)myBezierPathWithRect:(CGRect)rect{
[[UIColor redColor] setStroke];
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(10, 10, 280, 280)];
bezierPath.lineWidth = 10;
// 设置线两头样式
bezierPath.lineCapStyle = kCGLineCapRound;
// 开始绘制
[bezierPath stroke];
}
效果:
2:画矩形&&圆角矩形
(instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
rect: 矩形的Frame
cornerRadius: 圆角的半径
- (void)myBezierPathWithRoundedRect:(CGRect)rect {
[[UIColor redColor] setStroke];
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 200, 200)
cornerRadius:40];
bezierPath.lineWidth = 10;
bezierPath.lineCapStyle = kCGLineCapRound;
[bezierPath stroke];
}
效果:
3画矩形(部分圆角的矩形)
+(instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
rect: 需要画的矩形的Frame
corners: 哪些部位需要画成圆角
cornerRadii: 圆角的Size
-(void)myNewBezierPathWithRoundedRect:(CGRect)rect{
[[UIColor redColor] setStroke];
// 新建一个bezier对象,此对象用于绘制一个部分圆角的矩形,左上、右下
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 280, 280)
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight
cornerRadii:CGSizeMake(10, 10)];
// 设置线宽度
bezierPath.lineWidth = 10;
// 开始绘制
[bezierPath stroke];
}
4:画圆弧
+(instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
center: 圆心坐标
radius: 圆的半径
startAngle: 绘制起始点角度
endAngle: 绘制终点角度
clockwise: 是否顺时针
- (void)myBezierPathWithArcCenter{
[[UIColor redColor] setStroke];
// 新建一个bezier对象,此对象用于绘制一个圆弧
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)
radius:110
startAngle:0
endAngle:M_PI_2
clockwise:NO]
// 设置线宽度
bezierPath.lineWidth = 10;
// 开始绘制
[bezierPath stroke];
}
4:画圆,内切圆
+(instancetype)bezierPathWithOvalInRect:(CGRect)rect;
rect: 矩形的Frame
[[UIColor redColor] setStroke];
// 新建一个bezier对象,此对象用于绘制内切圆,需要传入绘制内切圆的矩形的Frame
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 280, 280)];
// 设置线宽度
bezierPath.lineWidth = 10;
// 设置线两头样式
bezierPath.lineCapStyle = kCGLineCapRound;
// 开始绘制
[bezierPath stroke];