一、简介

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(,);

}

//这里用于设置是否显示最大值最小值。

-(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(, , , )];

    view.center = point;

    view.layer.masksToBounds = YES;

    view.layer.cornerRadius = ;

    view.layer.borderWidth = ;

    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*, UUTagLabelwidth, UULabelHeight)];

        label.font = [UIFont systemFontOfSize:];

        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(, , , )];

    view.center = point;

    view.layer.masksToBounds = YES;

    view.layer.cornerRadius = ;

    view.layer.borderWidth = ;

    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*, UUTagLabelwidth, UULabelHeight)];

        label.font = [UIFont systemFontOfSize:];

        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==) {

        if ([[dic objectForKey:@"code"] intValue]==) {

            bloodPressureCharView = [[UUChart alloc] initwithUUChartDataFrame:CGRectMake(, ,  , ) 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];

    }

}

UUChart的使用的更多相关文章

  1. UUChart的使用--iOS绘制折线图

    UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图. 二.下载地址: https://github.com/ZhipingYang/UUChartView 三.使用 第一步.首先我们将下载 ...

  2. iOS uuchart 用法

    这个是 画 折线图用的 一个 第三方文件 说白了就是一个  用 贝塞尔 曲线封装好的一个  第三方. 但是有机会还是需要看下怎么用

  3. iOS 绘制漂亮的折线图

    效果图是这样的: 关键是在 基本策略 是描点 和 连线. 折线基础版本,我找到网上的第三方,UUChart . 特点是朴素,简单,扩展性强. 效果图重点是在折线要有阴影,于是 重点 放在 折线发散的阴 ...

随机推荐

  1. C++ 单例模式实现

    #include <iostream> #include <mutex> std::mutex mtx; class Singleton { private: Singleto ...

  2. 【源码解读】EOS测试插件:txn_test_gen_plugin.cpp

    本文内容本属于<[精解]EOS TPS 多维实测>的内容,但由于在编写时篇幅过长,所以我决定将这一部分单独成文撰写,以便于理解. 关键字:eos, txn_test_gen_plugin, ...

  3. C语言第七讲,函数入门.

    C语言第七讲,函数入门. 一丶了解面向过程和面向对象的区别. 为什么要先讲面向过程和面向对象的区别? 面向过程,就是什么都要自己做.  比如你要吃饭. 那么你得自己做饭. 面向对象, 面向对象就是我要 ...

  4. centos swap

    SWAP是Linux中的虚拟内存,用于扩充物理内存不足而用来存储临时数据存在的.它类似于Windows中的虚拟内存.在Windows中,只可以使用文件来当作虚拟内存.而linux可以文件或者分区来当作 ...

  5. SaltStack数据系统-Grans详解

    1:Grains是系统的一个组件,存放着minion启动时收集的系统底层的一些信息,每次minion启动的时候,会进行系统的采集,将其保存下来,在以后的生命周期中不会重新搜集,除非重启~ #查看gra ...

  6. 浅谈Java泛型中的? extends E和?super E

    https://blog.csdn.net/zymx14/article/details/78073757

  7. MySQL中表名重命名

    第一种办法:##修改表名, TO 或AS都可以,也以省略掉 ## ALTER TABLE 表名 RENAME [TO|AS] 新表名 ALTER TABLE user10 RENAME TO user ...

  8. SpringCloud初体验之Eureka

    Eureka简介 SpringBoot简化了Spring工程的复杂度,之前复杂的Spring工程被拆分成了一个个小的SpringBoot工程.那么SpringBoot之间如何通讯,相互获取信息呢?这就 ...

  9. Ajax实现的城市二级联动三

    把之前2篇整合在一起 1.html <select id="province"> <option>请选择</option> </selec ...

  10. Archlinux/Manjaro使用笔记-安装配置搜狗输入法步骤

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.安装qtwebkit-bin软件包解决qtwebkit无法编译安装问题 aurman -S qtwebkit-bin 二.安 ...