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(,);
}
//这里用于设置是否显示最大值最小值。
-(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的使用的更多相关文章
- UUChart的使用--iOS绘制折线图
UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图. 二.下载地址: https://github.com/ZhipingYang/UUChartView 三.使用 第一步.首先我们将下载 ...
- iOS uuchart 用法
这个是 画 折线图用的 一个 第三方文件 说白了就是一个 用 贝塞尔 曲线封装好的一个 第三方. 但是有机会还是需要看下怎么用
- iOS 绘制漂亮的折线图
效果图是这样的: 关键是在 基本策略 是描点 和 连线. 折线基础版本,我找到网上的第三方,UUChart . 特点是朴素,简单,扩展性强. 效果图重点是在折线要有阴影,于是 重点 放在 折线发散的阴 ...
随机推荐
- Hadoop2源码分析-YARN RPC 示例介绍
1.概述 之前在<Hadoop2源码分析-RPC探索实战>一文当中介绍了Hadoop的RPC机制,今天给大家分享关于YARN的RPC的机制.下面是今天的分享目录: YARN的RPC介绍 Y ...
- eclipse导入Tomcat8源码
最近这段时间在学习how tomcat works这本书,需要结合书上的例子对照tomcat源码来看,需要导入tomcat的源码,所以在网上找了很多教程,结合自己遇到的问题,记录如下: 1.前期准备 ...
- Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...
- (转)eclipse上传项目到码云
把Eclipse项目上传到码云的步骤: 1.登录码云:新建项目 2.输入项目名: 3.空项目创建成功如下图: 4.右键点击Eclipse的项目,选择“Team”—————->“Share Pro ...
- [SCOI2012] 喵星球上的点名
Description 给定 \(N\) 个姓名串和 \(M\) 个点名串.询问每个点名串点到了多少姓名和每个姓名串被点到了几次.\(N\leq 5\cdot 10^4,M\leq 10^5\). S ...
- DML和索引内部结构变化
1.修改数据对索引结构的影响 合适的索引对查询性能和效率的提升是巨大的,但是万事有利有弊,拥有索引的表在增.删.改记录时需要去维护索引.如何让增.删.改更快速更高效?这就需要了解数据修改时对索引结构会 ...
- 运行 svgatest 显示 mmap /dev/zero Permission denied 解决办法
答案是我在这个网站上找到的: 执行 xset dpms force off 命令就可以解决掉这个问题. 再次运行 svgatest 程序,得到了预期的结果,perfect!
- 【Java并发编程】14、Thread,线程说明
线程的状态:New.Runnable.Blocked.Waiting.Timed waiting.Terminated 1. RUNNABLE,对应"就绪"和"运行&qu ...
- 【Spring】10、Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名
@Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即 ...
- 【pygame游戏编程】第四篇-----打字测速游戏
下面我们一起用pygame编写一个打字测速游戏 这是一个很实用的有趣的小游戏: 开始之前先来学习几个小函数: 1. ord(ch) python内置函数,传入一个字符,返回字符的ascii码 2.ch ...