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 . 特点是朴素,简单,扩展性强. 效果图重点是在折线要有阴影,于是 重点 放在 折线发散的阴 ...
随机推荐
- MyBatis源码解析【8】简单demo理解接口式编程
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 上一次我们经过源码的 ...
- C++ 单例模式实现
#include <iostream> #include <mutex> std::mutex mtx; class Singleton { private: Singleto ...
- Java 8 新特性-菜鸟教程 (6) -Java 8 Optional 类
Java 8 Optional 类 Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个容 ...
- 3分钟看完Java 8——史上最强Java 8新特性总结之第一篇 函数式编程基础
目录 · 行为参数化 · Lambda表达式 · 概况 · 函数式接口 · 类型推断 · 使用外层变量 · 方法引用 · 复合Lambda表达式 行为参数化 1. 理解函数式编程要先理解行为参数化. ...
- Java设计模式学习记录-责任链模式
前言 已经把五个创建型设计模式和七个结构型设计模式介绍完了,从这篇开始要介绍行为型设计模式了,第一个要介绍的行为型设计模式就是责任链模式(又称职责链模式). 责任链模式 概念介绍 责任链模式是为了避免 ...
- 解决SharePoint 2010拒绝访问爬网内容源错误
今天发现SP爬网出现了问题,持续时间蛮长的,一直爬不到内容. 解决方案: 这里有一条解决在SharePoint 2010搜索爬网时遇到的"拒绝访问错误"的小技巧. 首先要检查默认内 ...
- typeof() 和 GetType()区是什么
1.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称. 2.GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof() ...
- CSS学习笔记09 简单理解BFC
引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 【IDEA&&Eclipse】5、IntelliJ IDEA常见配置
[idea配置jdk] http://blog.csdn.net/tolcf/article/details/50803414 [idea intellij 如何配置tomcat]http://jin ...
- SpringCloud(二)Eureka集群与Feign
两个Eureka 上一篇是两个服务像一个Eureka注册,如果Eureka宕掉了就不好了,现在来搭建两个Eureka,两个服务分别像其注册.两个Eureka都用本机来模拟,用两个端口号来表示. 首先修 ...