美文网首页
带渐变图层的曲线图绘制

带渐变图层的曲线图绘制

作者: 最晴天 | 来源:发表于2017-07-17 17:20 被阅读53次

在进行曲线图渐变图层绘制的时候,根据实际需要,在CFLineChartView的基础上增加了曲线绘制,和点击显示数值的处理。

渐变图层的绘制,百度了不少资料,可以新建渐变图层,然后为渐变图层设置mask路径即可。

效果图:

屏幕快照 2017-07-17 下午5.10.42.png

1.简单计算,确定x,y轴上的均值,以及通过记录最大Y值,和确定Y轴上最多有几个点
2.进行X轴和Y轴上的文本显示处理
3.绘制网格线

- (void)drawLines{
    UIBezierPath *path = [UIBezierPath bezierPath];
    //竖线 两条
    for (int i = 0; i < 2; i++) {
        [path moveToPoint:CGPointMake(HHLeftMargin+allW*i, HHTopMargin)];
        [path addLineToPoint:CGPointMake(HHLeftMargin+allW*i, HHTopMargin+allH)];
    }
    
    //横线 包括x轴
    for (int i = 0; i <= yCount; i++) {
        [path moveToPoint:CGPointMake(HHLeftMargin, HHViewSelfHeight-HHBottomMargin-everyY*i)];
        [path addLineToPoint:CGPointMake(HHViewSelfWidth-HHRightMargin, HHViewSelfHeight-HHBottomMargin-everyY*i)];
    }
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = path.CGPath;
    shapeLayer.strokeColor = self.gridLineColor.CGColor;
    shapeLayer.fillColor = [UIColor clearColor].CGColor;
    shapeLayer.lineWidth = 1;
    [self.layer addSublayer:shapeLayer];
}

4.计算点的坐标(可在此步骤进行点的绘制)
5.曲线绘制和渐变填充

- (void)drawCurvePath{
//    [self gradientLayer];
    
    _path = [UIBezierPath bezierPath];
    [_path moveToPoint:[_pointArr[0] CGPointValue]];
    
    for (int i = 1; i < _pointArr.count; i++) {
        CGPoint prePoint = [_pointArr[i-1] CGPointValue];
        CGPoint nowpoint = [_pointArr[i] CGPointValue];
        
        //控制点 x均为两个点的中点
        CGPoint controlPoint1 = CGPointMake((prePoint.x+nowpoint.x)/2, prePoint.y);
        CGPoint controlPoint2 = CGPointMake((prePoint.x+nowpoint.x)/2, nowpoint.y);
        [_path addCurveToPoint:nowpoint controlPoint1:controlPoint1 controlPoint2:controlPoint2];
    }
    
}

- (void)drawCurveLine{
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = _path.CGPath;
    shapeLayer.strokeColor = self.curveColor.CGColor;
    shapeLayer.fillColor = [UIColor clearColor].CGColor;
    shapeLayer.lineWidth = 1;
    [self.layer addSublayer:shapeLayer];
}

- (void)drawGradientLayer{
    UIBezierPath *gradientPath = [UIBezierPath bezierPathWithCGPath:_path.CGPath];

    gradientPath.lineWidth = 0.01;
    [gradientPath addLineToPoint:_xendPoint];
    [gradientPath addLineToPoint:_xStartPoint];
    [gradientPath addLineToPoint:[_pointArr[0] CGPointValue]];
    [gradientPath closePath];
    
    
    
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = self.bounds;
    NSArray *colors = @[(__bridge id)self.gradientStartColor.CGColor,(__bridge id)self.gradientEndColor.CGColor];
    gradientLayer.colors = colors;
    gradientLayer.locations = @[@0,@1];
    gradientLayer.startPoint = CGPointMake(0, 0);
    gradientLayer.endPoint = CGPointMake(0, 1);
    [self.layer addSublayer:gradientLayer];
    _gradientLayer = gradientLayer;
    
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.strokeColor = [UIColor clearColor].CGColor;
    maskLayer.path = gradientPath.CGPath;
    maskLayer.lineWidth = 0.01;
    //    maskLayer.fillColor = [UIColor whiteColor].CGColor;
    self.gradientLayer.mask = maskLayer;
    
}

5.触摸时显示点的视图添加

demo:https://github.com/HannahZheng/singleChart

相关文章

  • 带渐变图层的曲线图绘制

    在进行曲线图渐变图层绘制的时候,根据实际需要,在CFLineChartView的基础上增加了曲线绘制,和点击显示数...

  • CoreAnimation之CAGradientLayer

    CAGradientLayer可以绘制颜色渐变的图层,先来看一些它的属性: colors 图层上所有的颜色数组l...

  • 插画_Youtube 插画笔记 @作者:DAN Gartman

    Youtube 插画笔记 1. 画好草稿 2. 部分元素可根据照片画出轮廓 3. 分图层绘制渐变色 渐变色的绘制很...

  • CAGradientLayer渐变特效

    CAGradientLayer简单的理解就是渐变层,图层绘制通过GPU可以加速渲染速度,colors和locati...

  • iOS-CALayer之渐变图层

    CAGradientLayer 渐变图层 CALayer子类之一 渐变图层是根据colors数组中的颜色在图层中...

  • 渐变图层和插值曲线

    渐变图层通常与插值贝塞尔曲线混合使用来绘制各种变化曲线。刚开始也是公司需求,要绘制这种光滑的曲线,我也找了很多的第...

  • 渐变图层

  • 渐变图层

    渐变图层 使用这个图层配上透明度,可以做出比较好看的蒙板 使用步骤 设置渐变图层CAGradientLayer z...

  • 文字渐变色设置

    一、准备渐变图片和渐变字 二、调整图片图层位置让其盖住文字图层 三、选中图片图层和文字图层(快捷键command ...

  • 6.3.2 实战:用渐变填充图层制作蔚蓝晴空

    1、用快速选用工具,选取天空 2、新建一个渐变填充调整图层 3、调整渐变颜色 渐变颜色左 渐变颜色右 4、新建图层...

网友评论

      本文标题:带渐变图层的曲线图绘制

      本文链接:https://www.haomeiwen.com/subject/idhqkxtx.html