代码例子效果: 下载地址: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) {
-
- 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];
-
-
-
-
-
- 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;
- }
-
-
-
-
- - (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);
-
-
-
-
- CGContextSetLineJoin(context, kCGLineJoinRound);
-
- CGContextSetLineCap(context, kCGLineCapRound );
-
- CGContextSetBlendMode(context, kCGBlendModeNormal);
-
- CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
-
-
-
-
-
-
- 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);
-
-
-
-
- CGContextSetLineJoin(context, kCGLineJoinRound);
-
- CGContextSetLineCap(context, kCGLineCapRound );
-
- CGContextSetBlendMode(context, kCGBlendModeNormal);
-
-
- 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);
-
- 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);
-
-
-
- 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];
-
- LineChartViewDemo* line = [[LineChartViewDemo alloc] initWithFrame:CGRectMake(0, 0, 548, 250)];
-
- NSMutableArray *pointArr = [[NSMutableArray alloc]init];
-
-
-
- for (int i = 0; i < 12; i++) {
- [pointArr addObject:[NSValue valueWithCGPoint:CGPointMake(KlineWidth* (i+1), 55 * i)]];
-
- }
-
- NSMutableArray* pointArr2 = [NSMutableArray array];
-
-
- for (int i = 0; i < 12; i++) {
- [pointArr2 addObject:[NSValue valueWithCGPoint:CGPointMake(KlineWidth* (i + 1), 110 * 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];
-
-
-
-
-
-
-
- }
iOS画折线图,布布扣,bubuko.com
iOS画折线图
原文:http://www.cnblogs.com/ios8/p/ios-draw-line.html