zoukankan      html  css  js  c++  java
  • UUChart的使用

    一、简介

        UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图。自己再做一个医院相关的项目时,需要对一周内的血压进行监控,需要绘制折线图来表示出高压、低压的走向,因此学习了一下。

    二、下载地址:

        https://github.com/ZhipingYang/UUChartView

    三、使用

        第一步、首先我们将下载下来的文件解压,里面有一个UUChar的文件夹,然后将整个文件夹都拖到项目里面。我们会发现里面有UUBar.h、UUChart.h等文件,这些就是UUChart的具体实现。

        第二步、我们需要在引用的.h文件中引入

            #import “UUChart.h"

        然后实现代理

    @interface BloodPressureViewController : BaseViewController<UUChartDataSource,RequestDelegate>

        然后我们需要实例化一个UUChart.我自己实例化的是:UUChart *bloodPressureCharView;

        实例化三个数组:

        NSMutableArray *xValues;   //这个是横坐标的内容
    
        NSMutableArray *yValues1;  //这个是竖坐标的内容(高压)
    
     
    
        NSMutableArray *yValues2;  //这个是竖坐标的内容(低压)

        第三步、实现代理方法

        #pragma mark - UUCharView Delegate
    
    //该方法是返回实例化的折线图的横坐标
    
    -(NSArray *)UUChart_xLableArray:(UUChart *)chart
    
    {
    
        return xValues;
    
      
    
    }
    
    //该方法是返回实例化的折线图的竖坐标(若返回一个就是一条折线图,我这里需要显示高压低压,所以返回了两个)
    
    -(NSArray *)UUChart_yValueArray:(UUChart *)chart
    
    {
    
       
    
        return @[yValues1,yValues2];
    
    }
    
    //这里返回纵坐标的范围。
    
    -(CGRange)UUChartChooseRangeInLineChart:(UUChart *)chart
    
    {
    
        return CGRangeMake(200,0);
    
    }
    
    //这里用于设置是否显示最大值最小值。
    
     
    
    -(BOOL)UUChart:(UUChart *)chart ShowMaxMinAtIndex:(NSInteger)index
    
    {
    
        return YES;
    
    }
    
    //颜色数组
    
    - (NSArray *)UUChart_ColorArray:(UUChart *)chart
    
    {
    
        return @[UUGreen,UURed,UUBrown];
    
    }
    
    - (BOOL)UUChart:(UUChart *)chart ShowHorizonLineAtIndex:(NSInteger)index
    
    {
    
        return YES;
    
    }

       第四步、我们把自己需要设置的数据放入三个数组中即可。 

    题外话,我自己需要一个功能就是把所有的折线图中的点的纵坐标都显示出来,所以对UUChart稍加修改即可。修改方法如下:

        找到UULineChar.m然后找到如下代码:

    - (void)addPoint:(CGPoint)point index:(NSInteger)index isShow:(BOOL)isHollow value:(CGFloat)value
    
    {
    
        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(5, 5, 8, 8)];
    
        view.center = point;
    
        view.layer.masksToBounds = YES;
    
        view.layer.cornerRadius = 4;
    
        view.layer.borderWidth = 2;
    
        view.layer.borderColor = [[_colors objectAtIndex:index] CGColor]?[[_colors objectAtIndex:index] CGColor]:UUGreen.CGColor;
    
        
    
        if (isHollow) {
    
            view.backgroundColor = [UIColor whiteColor];
    
        }else{
    
            view.backgroundColor = [_colors objectAtIndex:index]?[_colors objectAtIndex:index]:UUGreen;
    
            UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(point.x-UUTagLabelwidth/2.0, point.y-UULabelHeight*2, UUTagLabelwidth, UULabelHeight)];
    
            label.font = [UIFont systemFontOfSize:10];
    
            label.textAlignment = NSTextAlignmentCenter;
    
            label.textColor = view.backgroundColor;
    
            label.text = [NSString stringWithFormat:@"%d",(int)value];
    
            [self addSubview:label];
    
        }
    
     
    
        [self addSubview:view];
    
     
    
    }

    我们只需要把if else判断去掉即可。即

    - (void)addPoint:(CGPoint)point index:(NSInteger)index isShow:(BOOL)isHollow value:(CGFloat)value
    
    {
    
        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(5, 5, 8, 8)];
    
        view.center = point;
    
        view.layer.masksToBounds = YES;
    
        view.layer.cornerRadius = 4;
    
        view.layer.borderWidth = 2;
    
        view.layer.borderColor = [[_colors objectAtIndex:index] CGColor]?[[_colors objectAtIndex:index] CGColor]:UUGreen.CGColor;
    
        
    
    //    if (isHollow) {
    
    //        view.backgroundColor = [UIColor whiteColor];
    
    //    }else{
    
            view.backgroundColor = [_colors objectAtIndex:index]?[_colors objectAtIndex:index]:UUGreen;
    
            UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(point.x-UUTagLabelwidth/2.0, point.y-UULabelHeight*2, UUTagLabelwidth, UULabelHeight)];
    
            label.font = [UIFont systemFontOfSize:10];
    
            label.textAlignment = NSTextAlignmentCenter;
    
            label.textColor = view.backgroundColor;
    
            label.text = [NSString stringWithFormat:@"%d",(int)value];
    
            [self addSubview:label];
    
    //    }
    
        
    
        [self addSubview:view];
    
    }

    这样就可以把所有点的纵坐标显示出来了。效果如图所示

    另附请求处理源码,希望大家用得到

    -(void)requestResult:(NSDictionary *)dic tag:(NSInteger)tag
    
    {
    
        if (tag==20) {
    
            if ([[dic objectForKey:@"code"] intValue]==0) {
    
                bloodPressureCharView = [[UUChart alloc] initwithUUChartDataFrame:CGRectMake(0, 50, 600 , 400) withSource:self withStyle:UUChartLineStyle];
    
                
    
                BloodPressureModel *model = [[BloodPressureModel alloc] init];
    
                NSMutableArray *arr = [model getWeightArrFromDic:dic];
    
                [xValues removeAllObjects];
    
                [yValues1 removeAllObjects];
    
                [yValues2 removeAllObjects];
    
                for(BloodPressureModel *mo in arr)
    
                {
    
                    [xValues addObject:mo.weekDay];
    
                    [yValues1 addObject:mo.diastolicPressure];
    
                    [yValues2 addObject:mo.systolicPressure];
    
                }
    
                [bloodPressureCharView showInView:self.view];
    
                [self HUDHide];
    
            }else
    
            {
    
                [self HUDHide];
    
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    
                    [self alert:[dic objectForKey:@"msg"]];
    
                });
    
            }
    
     
    
     
    
        }else
    
        {
    
            [self HUDHide];
    
        }
    
       
    
    }
    View Code
  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/zhanggui/p/4636225.html
Copyright © 2011-2022 走看看