一、简介

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. Django使用Channels实现WebSocket--上篇

    WebSocket - 开启通往新世界的大门 WebSocket是什么? WebSocket是一种在单个TCP连接上进行全双工通讯的协议.WebSocket允许服务端主动向客户端推送数据.在WebSo ...

  2. 使用Dockerfile创建支持SSH服务的镜像

    1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像. 2.首先创建一个目录ssh_centos [root@rocketmq-nameserv ...

  3. 关于Class对象、类加载机制、虚拟机运行时内存布局的全面解析和推测

    简介: 本文是对Java的类加载机制,Class对象,反射原理等相关概念的理解.验证和Java虚拟机中内存布局的一些推测.本文重点讲述了如何理解Class对象以及Class对象的作用. 欢迎探讨,如有 ...

  4. mysql存储引擎选择(转)

    MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系.由于各存储引擎功能特性差异较大,这篇文 ...

  5. 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析

    前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...

  6. Jmeter获取接口返回数组的长度

    添加BeanShell PostProcessor来获取,具体代码如下: import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath ...

  7. Hyperledger Fabric密码模块系列之BCCSP(五) - 国密算法实现

    Talk is cheap, show me your code. 代码也看了,蛋也扯了,之后总该做点什么.响应国家政策,把我们的国密算法融合进去吧--  先附两张bccsp下国密算法的设计实现图. ...

  8. 简要描述 JavaScript 中定义函数的几种方式

    JavaScript 中,有三种定义函数的方式: 1.函数语句:即使用 function 关键字显式定义函数.如: function f(x){ return x+1; }  2.函数定义表达式:也称 ...

  9. 解决SQL Server 2008安装时提示:重新启动计算机 失败

    a.重启机器,再进行安装,如果发现还有该错误,请按下面步骤: b.在开始->运行中输入regedit c.到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet ...

  10. SQL 语句在查询分析器执行很快,程序 Dapper 参数化查询就很慢(parameter-sniffing)

    这个问题困扰我好长时间了,使用SQLSERVER 事务探查器找到执行超时的SQL语句,参数查询都是通过执行exe sp_executesql 的存储过程调用,因为它能够分析并缓存查询计划,从而优化查询 ...