设为首页 加入收藏

TOP

iOS 折线图、柱状图的简单实现(三)
2019-08-31 00:20:02 】 浏览:85
Tags:iOS 线图 柱状 简单 实现
intValue]; [path addLineToPoint:point]; }
break; case LineType_Curve: //曲线 for (int i =0; i<allPoints.count; i++) { if (i==0) { PrePonit = [allPoints[0] CGPointValue]; }else{ CGPoint NowPoint = [allPoints[i] CGPointValue]; [path addCurveToPoint:NowPoint controlPoint1:CGPointMake((PrePonit.x+NowPoint.x)/2, PrePonit.y) controlPoint2:CGPointMake((PrePonit.x+NowPoint.x)/2, NowPoint.y)]; //三次曲线 PrePonit = NowPoint; } } break; } CAShapeLayer *shapeLayer = [CAShapeLayer layer]; shapeLayer.path = path.CGPath; shapeLayer.strokeColor = [UIColor greenColor].CGColor; shapeLayer.fillColor = [UIColor clearColor].CGColor; shapeLayer.borderWidth = 2.0; [self.subviews[0].layer addSublayer:shapeLayer]; //4.添加目标值文字 for (int i =0; i<allPoints.count; i++) { UILabel *label = [[UILabel alloc] init]; label.textColor = [UIColor purpleColor]; label.textAlignment = NSTextAlignmentCenter; label.font = [UIFont systemFontOfSize:10]; [self.subviews[0] addSubview:label]; if (i==0) { CGPoint NowPoint = [allPoints[0] CGPointValue]; label.text = [NSString stringWithFormat:@"%.0lf",starting+proportion*(CGRectGetHeight(myFrame)-NowPoint.y-MARGIN)/2]; label.frame = CGRectMake(NowPoint.x-MARGIN/2, NowPoint.y-20, MARGIN+adddistance, 20); PrePonit = NowPoint; }else{ CGPoint NowPoint = [allPoints[i] CGPointValue]; if (NowPoint.y<PrePonit.y) { //文字置于点上方 label.frame = CGRectMake(NowPoint.x-MARGIN/2, NowPoint.y-20, MARGIN+adddistance, 20); }else{ //文字置于点下方 label.frame = CGRectMake(NowPoint.x-MARGIN/2, NowPoint.y, MARGIN+adddistance, 20); } label.text = [NSString stringWithFormat:@"%.0lf",starting+proportion*(CGRectGetHeight(myFrame)-NowPoint.y-MARGIN)/2]; PrePonit = NowPoint; } } }

5、柱状图的实现

/**
 *  画柱状图
 */
-(void)drawBarChartViewWithX_Value_Names:(NSMutableArray *)x_names TargetValues:(NSMutableArray *)targetValues Adddistanceva lues:(NSInteger )adddistance  StartingValues:(NSInteger)starting ProportionValuess:(NSInteger)proportion{
    
    //1.画坐标轴
    
    [self drawXYLine:x_names Adddistanceva lues:adddistance StartingValues:starting ProportionValuess:proportion];
    NSMutableArray * targetValues1 =[[NSMutableArray alloc]init];
    for (int i=0; i<targetValues.count; i++  ){
        CGFloat coed =[targetValues[i] integerValue];
        [targetValues1 addObject:@((coed-starting)/proportion)];
       
    }
    //2.每一个目标值点坐标
    for (int i=0; i<targetValues1.count; i++) {
        CGFloat doubleva lue = 2*[targetValues1[i] floatValue]; //目标值放大两倍
        CGFloat X = MARGIN + MARGIN*(i+1)+5;
        CGFloat Y = CGRectGetHeight(myFrame)-MARGIN-doubleva lue;
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(X-MARGIN/2+adddistance, Y, MARGIN-10, doubleva lue)];
        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
        shapeLayer.path = path.CGPath;
        shapeLayer.strokeColor = [UIColor clearColor].CGColor;
        shapeLayer.fillColor = XYQRandomColor.CGColor;
        shapeLayer.borderWidth = 2.0;
        [self.subviews[0].layer addSublayer:shapeLayer];
        
        //3.添加文字
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(X-MARGIN/2, Y-20, MARGIN-10+adddistance*2, 20)];
        label.text = [NSString stringWithFormat:@"%.0lf",starting+proportion*(CGRectGetHei
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS 判断两个颜色是否相同 下一篇OpenGL ES 渲染立体图形

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目