代码下载: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