[iOS开发]折线图的绘制

之前已经搞过了圆形进度条,现在再来看一下折线图的绘制方法。
前面我们已经使用过贝塞尔曲线去画圆了,这次我们就使用它来绘制折线吧。
其实这并不困难:

_shapeLayerPath = [[UIBezierPath alloc] init];
[_shapeLayerPath moveToPoint:CGPointMake(x1, y1)];
[_shapeLayerPath addLineToPoint:CGPointMake(x2, y2)];

CAShapeLayer *lineLayer = [CAShapeLayer layer];
lineLayer.path = _shapeLayerPath.CGPath;
lineLayer.fillColor = [UIColor clearColor].CGColor;
lineLayer.strokeColor = [UIColor colorWithRed:1 green:0.7 blue:1 alpha:1].CGColor;
lineLayer.opacity = 1;
lineLayer.lineWidth = 3;
[self.layer addSublayer:lineLayer];

请添加图片描述
这样屏幕上就出现了一条线。既然明白了画折线的原理:

[_shapeLayerPath moveToPoint:CGPointMake(x1, y1)];//起点
[_shapeLayerPath addLineToPoint:CGPointMake(x2, y2)];//后续拐点
...

那么我们就可以轻松进阶,画出一个折线:
请添加图片描述
只需要找好几个拐点的坐标就可以轻松搞定啦。我们时常看到那些好看的,带有背景渐变的折线图,那它们又是怎么实现的呢?这就要用到遮罩的知识了。和前面一样,先涂个背景:

self.colorLayer = [CAGradientLayer layer];
self.colorLayer.frame = self.bounds;
[self.colorLayer setBackgroundColor:[UIColor whiteColor].CGColor];
//将CAGradientlayer对象添加在我们要设置背景色的视图的layer层
[self.layer addSublayer:self.colorLayer];
CGColorRef color1 = [UIColor colorWithRed:1 green:0.7 blue:1 alpha:1].CGColor;
CGColorRef color2 = [UIColor colorWithRed:1 green:0.9 blue:1 alpha:0].CGColor;
[self.colorLayer setColors:@[(__bridge id)color1,(__bridge id)color2]];

效果:
请添加图片描述

再使用我们之前用过的设置遮罩(mask)来截获我们所需要的部分。先明确要哪一部分,再使用贝塞尔曲线对这个部分进行绘制:
请添加图片描述
显然,我们所需要的是绿色的部分,即处在我们画的折线图下面的这一部分。那么我们开心地添加遮罩:

self.colorLayer.mask = shapeLayer;

效果:
在这里插入图片描述
这样,就得到了想要的部分。接下来,把我们画好的折线加上去:
请添加图片描述
此外,还可以添加个坐标轴啥的,就不一一讲解了。请添加图片描述

总结:

画线,要渐变就再画线,遮罩。添加上去,就完成啦!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值