iOS画折线图
来源:互联网 发布:数据的独立性是指 编辑:程序博客网 时间:2024/05/22 03:01
代码例子效果: 下载地址:http://download.csdn.net/detail/qqmcy/6983187
LineChartViewDemo.h
#import <UIKit/UIKit.h>@interface LineChartViewDemo : UIView//横竖轴距离间隔@property (assign) NSInteger hInterval;@property (assign) NSInteger vInterval;//横竖轴显示标签@property (nonatomic, strong) NSArray *hDesc;@property (nonatomic, strong) NSArray *vDesc;//点信息@property (nonatomic, strong) NSArray *array;@property (nonatomic, strong) NSArray* array1;@end
LineChartViewDemo.m
#import "LineChartViewDemo.h"#import "EColumnChartLabel.h"#define KlineHeight 30@interface LineChartViewDemo(){ CALayer *linesLayer; UIView *popView; UILabel *disLabel; int x; int y; }@end@implementation LineChartViewDemo- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code self.backgroundColor = [UIColor clearColor]; x = frame.size.width; y = frame.size.height; _hInterval = 10; _vInterval = 50; linesLayer = [[CALayer alloc] init]; linesLayer.masksToBounds = YES; linesLayer.contentsGravity = kCAGravityLeft; linesLayer.backgroundColor = [[UIColor redColor] CGColor]; //[self.layer addSublayer:linesLayer]; //PopView popView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 60, 30)]; [popView setBackgroundColor:[UIColor whiteColor]]; [popView setAlpha:0.0f]; disLabel = [[UILabel alloc]initWithFrame:popView.frame]; [disLabel setTextAlignment:NSTextAlignmentCenter]; [popView addSubview:disLabel]; [self addSubview:popView]; } return self;}// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{ [self setClearsContextBeforeDrawing: YES]; CGContextRef context = UIGraphicsGetCurrentContext(); //画背景线条------------------ CGColorRef backColorRef = [UIColor redColor].CGColor; CGFloat backLineWidth = 0.5f; CGFloat backMiterLimit = 0.f; CGContextSetLineWidth(context, backLineWidth);//主线宽度 // CGContextSetMiterLimit(context, backMiterLimit);//投影角度 //CGContextSetShadowWithColor(context, CGSizeMake(3, 5), 8, backColorRef);//设置双条线 CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineCap(context, kCGLineCapRound ); CGContextSetBlendMode(context, kCGBlendModeNormal); CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor); // CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:225.0f / 255.0f green:225.0f / 255.0f blue:225.0f / 255.0f alpha:1.0].CGColor); // int x = 400 ;// //Y轴横线// int y = 300 ; int tempY = y; //添加纵轴标签和线 for (int i=0; i<_vDesc.count; i++) { CGPoint bPoint = CGPointMake(30, tempY); CGPoint ePoint = CGPointMake(x, tempY); EColumnChartLabel *label = [[EColumnChartLabel alloc]initWithFrame:CGRectMake(0, 0, 30, 30)]; [label setCenter:CGPointMake(bPoint.x-15, bPoint.y-30)]; [label setTextAlignment:NSTextAlignmentCenter]; [label setBackgroundColor:[UIColor clearColor]]; [label setTextColor:[UIColor blackColor]]; [label setText:[_vDesc objectAtIndex:i]]; [self addSubview:label]; CGContextMoveToPoint(context, bPoint.x, bPoint.y-30); CGContextAddLineToPoint(context, ePoint.x, ePoint.y-30); tempY -= y * 0.1; } for (int i=0; i<_array.count-1; i++) { EColumnChartLabel *label = [[EColumnChartLabel alloc]initWithFrame:CGRectMake(i*KlineHeight+30, y - 30, 40, 30)]; [label setTextAlignment:NSTextAlignmentCenter]; [label setBackgroundColor:[UIColor clearColor]]; [label setTextColor:[UIColor redColor]]; label.numberOfLines = 1; label.adjustsFontSizeToFitWidth = YES; label . minimumFontSize = 1.0f; [label setText:[_hDesc objectAtIndex:i]]; [self addSubview:label]; } CGContextStrokePath(context); // //画点线条------------------ CGColorRef pointColorRef = [UIColor colorWithRed:24.0f/255.0f green:116.0f/255.0f blue:205.0f/255.0f alpha:1.0].CGColor; CGFloat pointLineWidth = 1.5f; CGFloat pointMiterLimit = 5.0f; CGContextSetLineWidth(context, pointLineWidth);//主线宽度 CGContextSetMiterLimit(context, pointMiterLimit);//投影角度 //CGContextSetShadowWithColor(context, CGSizeMake(3, 5), 8, pointColorRef);//设置双条线 CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineCap(context, kCGLineCapRound ); CGContextSetBlendMode(context, kCGBlendModeNormal); //CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); UIColor* color1 = c_BeforeLastYear; [color1 set];//绘图CGPoint p1 = [[_array objectAtIndex:0] CGPointValue];int i = 0; //获取视图的高 int tempY1 = y; int tempWidth = y * 0.1f; float tempHeight = y * (270.0 / 320.0); float tempHeight1 = y * (20.0f / 320.0f); // NSLog(@"%f");CGContextMoveToPoint(context, p1.x + 20, tempHeight-p1.y*tempWidth/tempHeight1);for (; i<[_array count]; i++){p1 = [[_array objectAtIndex:i] CGPointValue]; CGPoint goPoint = CGPointMake(p1.x + 20, tempHeight-p1.y*tempWidth/tempHeight1);CGContextAddLineToPoint(context, goPoint.x, goPoint.y);; //添加触摸点 UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom]; [bt setBackgroundColor:[UIColor redColor]]; [bt setFrame:CGRectMake(0, 0, 10, 10)]; [bt setCenter:goPoint]; [bt addTarget:self action:@selector(btAction:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:bt];} CGContextStrokePath(context); // CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor); UIColor* color = c_LastYear; [color set]; //绘图 p1 = [[_array1 objectAtIndex:0] CGPointValue]; i = 0;CGContextMoveToPoint(context, p1.x + 20, tempHeight-p1.y*tempWidth/tempHeight1);for (; i<[_array1 count]; i++){p1 = [[_array1 objectAtIndex:i] CGPointValue]; CGPoint goPoint = CGPointMake(p1.x + 20, tempHeight-p1.y*tempWidth/tempHeight1);CGContextAddLineToPoint(context, goPoint.x, goPoint.y);; //添加触摸点 UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom]; [bt setBackgroundColor:[UIColor redColor]]; [bt setFrame:CGRectMake(0, 0, 10, 10)]; [bt setCenter:goPoint]; [bt addTarget:self action:@selector(btAction:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:bt];}CGContextStrokePath(context); }- (void)btAction:(id)sender{ [disLabel setText:@"400"]; UIButton *bt = (UIButton*)sender; popView.center = CGPointMake(bt.center.x, bt.center.y - popView.frame.size.height/2); [popView setAlpha:1.0f];}
ViewController.m
#import "LineChartViewDemo.h"#define CC_DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) * 0.01745329252f) #define KlineHeight 20#define KlineWidth 30@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. LineChartViewDemo* line = [[LineChartViewDemo alloc] initWithFrame:CGRectMake(0, 0, 548, 250)]; // line.layer.transform = CATransform3DMakeRotation(CC_DEGREES_TO_RADIANS(90), 0, 0, 1); NSMutableArray *pointArr = [[NSMutableArray alloc]init]; //生成随机点 1 //[pointArr addObject:[NSValue valueWithCGPoint:CGPointMake(KlineWidth*0, 0)]]; for (int i = 0; i < 12; i++) { [pointArr addObject:[NSValue valueWithCGPoint:CGPointMake(KlineWidth* (i+1), 5 * i)]]; } NSMutableArray* pointArr2 = [NSMutableArray array]; //生成随机点 2 for (int i = 0; i < 12; i++) { [pointArr2 addObject:[NSValue valueWithCGPoint:CGPointMake(KlineWidth* (i + 1), 10 * i)]]; } //竖轴 NSMutableArray *vArr = [[NSMutableArray alloc]initWithCapacity:pointArr.count-1]; for (int i=0; i<9; i++) { [vArr addObject:[NSString stringWithFormat:@"%d",i*20]]; } //横轴 NSMutableArray *hArr = [[NSMutableArray alloc]initWithCapacity:pointArr.count-1]; for (int i = 1; i <= 12; i++) { [hArr addObject:[NSString stringWithFormat:@"%d",i]]; } [line setHDesc:hArr]; [line setVDesc:vArr]; [line setArray:pointArr]; [line setArray1:pointArr2]; [self.view addSubview:line]; }
0 0
- iOS画折线图
- iOS画简单折线图
- iOS简单画折线图
- iOS画柱状图,折线图
- IOS使用Core-Plot画折线图
- IOS使用CGContextRef动态画折线图
- IOS使用CGContextRef动态画折线图
- iOS 折线图动画
- iOS 柱状图 折线图
- iOS折线图
- iOS折线图
- iOS 折线图 ARLineChart-master
- iOS 实现折线图(二)
- iOS简易动画折线图
- iOS画折线图Charts框架的使用
- 动态画折线图
- C# 画折线图
- gnuplot 画折线图
- 黑马程序员 java基础学习笔记1
- C++容器--标准库函数
- Tomcat源码分析之Server与Lifecycle的设计与实现
- Ubuntu12.04操作系统安装时,出现的问题及解决方案
- 《训练指南》中的“突击战”和分金币问题
- iOS画折线图
- lua 学习总结1:随笔
- Unity3D编辑器插件
- hadoop在linux操作系统中部署遇到的问题及解决方案
- windows git客户端安装
- J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)
- JAVA基础知识复习3
- JDBC的接口
- Binary Tree Level Order Traversal II 有不解。。。