代码下载: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
#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
原文:http://blog.csdn.net/qqmcy/article/details/19293029