一、简介

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. Spring @RequestAttribute

    @RequestAttribute注解用法 @RequestAttribute用在方法入参上,作用:从request中取对应的值,至于request中是怎么存在该属性的,方式多种多样,拦截器中预存.M ...

  2. Maven教程3(依赖管理)

    Maven教程2(Eclipse配置及maven项目) Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象.这些对 象通过一个名为项目对象模型(Project Object Mo ...

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

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

  4. python的Web框架,会话保持及Form表单

    会话 从打开浏览器访问到关闭浏览器,这就是一次会话. cookie 技术 cookie是保存在浏览器的,安全度比较低. # 设置cookie范式,在view中设置 def index(request) ...

  5. LeetCode算法笔记目录

    贪心算法: LeetCode翻转矩阵后的得分-Python3<六> LeetCode根据身高重建队列-Python3<七> LeetCode 任务调度器-Python3< ...

  6. Java入门 第10天 ,理解数组

    数组的特点: 1.内容的类型固定,不会int String 两个类型一起,要么是int类型 要么是String类型 或者其他类型. 2.长度是固定的,例:String [ ]   myArray  = ...

  7. javascript基础知识学习

    javascript中几种基础函数的介绍 1.typeof 注意: ① typeof 是操作符,不是函数: ② typeof 操作符 接收一个参数,用来判断参数数据类型,存在六种返回值类型,非别是:u ...

  8. VUE页面刷新问题

    1). location方式 location.reload() 缺点:刷新页面,卡白 2). router方式 this.$router.go(0) 缺点:同一问题,比一好点 3). provide ...

  9. 消息队列&Celery&RabbitMQ&zeromq

    一.消息队列 什么是消息队列? “消息队列”是在消息的传输过程中保存消息的容器. “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 消息 ...

  10. loadrunner 11 安装与使用

    注:以下链接均为转载,详细内容请查看原文. 安装教程: https://blog.csdn.net/u010731693/article/details/78986840 使用教程: https:// ...