利用EChart 画柱状图

来源:互联网 发布:libevent源码下载 编辑:程序博客网 时间:2024/05/31 20:52

代码下载:http://download.csdn.net/detail/qqmcy/6927265

DJColumnChartViewController.h

#import <UIKit/UIKit.h>#import "EChart/EColumnChart.h"@interface DJColumnChartViewController : UIViewController <EColumnChartDelegate, EColumnChartDataSource>@property (strong , nonatomic) EColumnChart* m_eColumnChart;@end

DJColumnChartViewController.m

#import "DJColumnChartViewController.h"#import "EColumnDataModel.h"#import "EColumnChartLabel.h"#import "EFloatBox.h"#import "EColor.h"#import <stdlib.h>@interface DJColumnChartViewController ()@property (strong , nonatomic) NSArray* data;@property (strong , nonatomic) EFloatBox* eFloatBox;@property (strong , nonatomic) EColumn* eColumnSelected;@property (strong , nonatomic) UIColor* tempColor;@end@implementation DJColumnChartViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];// Do any additional setup after loading the view.    self.view.transform  = CGAffineTransformMakeRotation(M_PI / 2);        NSMutableArray* temp = [NSMutableArray array];    for (int i = 0; i < 20; i++) {        int value = arc4random() % 100;        EColumnDataModel* eColumnDataModel = [[EColumnDataModel alloc] initWithLabel:[NSString stringWithFormat:@"%d",i] value:value index:i unit:@"kwh"];        [temp addObject:eColumnDataModel];    }        _data = [NSArray arrayWithArray:temp];    _m_eColumnChart = [[EColumnChart alloc] initWithFrame:CGRectMake(0, 150, 300, 200)];    [_m_eColumnChart setColumnsIndexStartFromLeft:YES];    [_m_eColumnChart setShowHighAndLowColumnWithColor:YES];    _m_eColumnChart.delegate = self;    NSLog(@"delegate = %@",_m_eColumnChart.delegate);    _m_eColumnChart.dataSource = self;    [self.view addSubview:_m_eColumnChart];                }#pragma -mark- EColumnChartDataSource-(NSInteger)numberOfColumnsInEColumnChart:(EColumnChart *)eColumnChart{    return [_data count];}-(NSInteger)numberOfColumnsPresentedEveryTime:(EColumnChart *)eColumnChart{    return 12;}-(EColumnDataModel*)highestValueEColumnChart:(EColumnChart *)eColumnChart{    EColumnDataModel* maxDataModel = nil;    float maxValue = -FLT_MIN;    for (EColumnDataModel* dataModel in _data) {        if (dataModel.value > maxValue) {            maxValue = dataModel.value;            maxDataModel = dataModel;        }    }    return maxDataModel;}-(EColumnDataModel*)eColumnChart:(EColumnChart *)eColumnChart valueForIndex:(NSInteger)index{    if (index >= [_data count] || index < 0) {        return nil;    }    return [_data objectAtIndex:index + 1];}#pragma -mark- EColumnChartDelegate- (void)eColumnChart:(EColumnChart *) eColumnChart             didSelectColumn:(EColumn *) eColumn{    NSLog(@"Index: %d Value: %f",eColumn.eColumnDataModel.index,eColumn.eColumnDataModel.value);    if (_eColumnSelected) {        _eColumnSelected.barColor = _tempColor;    }        _eColumnSelected = eColumn;    _tempColor = eColumn.barColor;    eColumn.barColor = [UIColor blackColor];            }-(void)eColumnChart:(EColumnChart *)eColumnChart fingerDidEnterColumn:(EColumn *)eColumn{    NSLog(@"Finger did enter %d",eColumn.eColumnDataModel.index);    CGFloat eFloatBoxX = eColumn.frame.origin.x + eColumn.frame.size.width * 1.25;    CGFloat eFloatBoxY = eColumn.frame.origin.y + eColumn.frame.size.height * (1 - eColumn.grade);    if (_eFloatBox) {        [_eFloatBox removeFromSuperview];        _eFloatBox.frame = CGRectMake(eFloatBoxX, eFloatBoxY, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);        [_eFloatBox setValue:eColumn.eColumnDataModel.value];        [eColumnChart addSubview:_eFloatBox];    }    else{        _eFloatBox = [[EFloatBox alloc] initWithPosition:CGPointMake(eFloatBoxX, eFloatBoxY) value:eColumn.eColumnDataModel.value unit:@"kwh" title:@"Title"];        _eFloatBox.alpha = 0.0;        [eColumnChart addSubview:_eFloatBox];            }            eFloatBoxY -= (_eFloatBox.frame.size.height + eColumn.frame.size.width * 0.25f);    _eFloatBox.frame = CGRectMake(eFloatBoxX, eFloatBoxY, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);    [UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionTransitionNone animations:^{        _eFloatBox.alpha = 1.0f;    } completion:^(BOOL finished) {            }];    }- (void) eColumnChart:(EColumnChart *) eColumnChart        fingerDidLeaveColumn:(EColumn *) eColumn{    NSLog(@"");}/** When finger leaves wherever in the chart, will trigger both if finger is leaving from a column */- (void) fingerDidLeaveEColumnChart:(EColumnChart *)eColumnChart{    if (_eFloatBox) {        [UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionTransitionNone animations:^{            _eFloatBox.alpha = 0.0f;            _eFloatBox.frame = CGRectMake(_eFloatBox.frame.origin.x, _eFloatBox.frame.origin.y + _eFloatBox.frame.size.height, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);        } completion:^(BOOL finished) {            [_eFloatBox removeFromSuperview];            _eFloatBox = nil;        }];    }}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end



0 0