画三角形和其他图形同理,这里主要介绍下画三角形。
1️⃣.使用图形上下文:CGContextRef
2️⃣.使用UIBeizerPath:
3️⃣.使用UIBeizerPath&CAShapeLayer
注意方法1️⃣,2️⃣需要在view的drawRect方法里重绘。
方法一:CGContextRef(需要新建一个自定义view,在view的drawRect方法里进行绘制操作)
- (void)drawRect:(CGRect)rect
{
// 设置背景色
[[UIColor whiteColor] set];
//拿到当前视图准备好的画板
CGContextRef context = UIGraphicsGetCurrentContext();
//利用path进行绘制三角形
CGContextBeginPath(context);//标记
CGContextMoveToPoint(context,
_pointOne.x, _pointOne.y);//设置起点
CGContextAddLineToPoint(context,
_pointTwo.x , _pointTwo.y);
CGContextAddLineToPoint(context,
_pointThr.x, _pointThr.y);
CGContextClosePath(context);//路径结束标志,不写默认封闭
[_fillColor setFill]; //设置填充色
[_fillColor setStroke]; //设置边框颜色
CGContextDrawPath(context,
kCGPathFillStroke);//绘制路径path
}
方法二:UIBeizerPath (同一,需要建自定义view)
// 画三角形
- (void)drawTrianglePath {
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(20, 20)];
[path addLineToPoint:CGPointMake(self.frame.size.width - 40, 20)];
[path addLineToPoint:CGPointMake(self.frame.size.width / 2, self.frame.size.height - 20)];
// 最后的闭合线是可以通过调用closePath方法来自动生成的,也可以调用-addLineToPoint:方法来添加
// [path addLineToPoint:CGPointMake(20, 20)];
[path closePath];
// 设置线宽
path.lineWidth = 1.5;
// 设置填充颜色
UIColor *fillColor = [UIColor greenColor];
[fillColor set];
[path fill];
// 设置画笔颜色
UIColor *strokeColor = [UIColor blueColor];
[strokeColor set];
// 根据我们设置的各个点连线
[path stroke];
}
方法三:UIBeizerPath&CAShapeLayer(路径使用UIBizerPath绘制,用CAShapeLayer生成最终图形)
// CAShapeLayer and UIBezierPath
- (void)setupViewByCAShapeLayer {
CAShapeLayer *triangleLayer = [[CAShapeLayer alloc]init];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(200, 300)];
[path addLineToPoint:CGPointMake(250, 200)];
[path addLineToPoint:CGPointMake(300, 300)];
triangleLayer.path = path.CGPath;
[self.view.layer addSublayer:triangleLayer];
[triangleLayer setFillColor:[UIColor cyanColor].CGColor];
}
三种方法看需求使用。第三种使用较多,可通过UIBezierPath的灵活性绘制很多样式的View。后续会把UIBezierPath的相关学习内容整理发出来。
网友评论