From f59e21025896a813070c401a305bb29cad46a303 Mon Sep 17 00:00:00 2001 From: Luiz Duraes Date: Fri, 21 Feb 2014 17:42:39 -0300 Subject: [PATCH 1/2] Added popup image and label... --- .../xcshareddata/BarChart.xccheckout | 14 +-- .../UserInterfaceState.xcuserstate | Bin 0 -> 12733 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 23 +++++ .../xcschemes/BarChart.xcscheme | 96 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 +++++ .../popup.imageset/Contents.json | 17 ++++ .../popup.imageset/popup-items.png | Bin 0 -> 3206 bytes BarChart/Library/DrawerBarChart.m | 42 ++++++-- 8 files changed, 205 insertions(+), 14 deletions(-) create mode 100644 BarChart.xcodeproj/project.xcworkspace/xcuserdata/lduraes.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/BarChart.xcscheme create mode 100644 BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 BarChart/Images.xcassets/popup.imageset/Contents.json create mode 100644 BarChart/Images.xcassets/popup.imageset/popup-items.png diff --git a/BarChart.xcodeproj/project.xcworkspace/xcshareddata/BarChart.xccheckout b/BarChart.xcodeproj/project.xcworkspace/xcshareddata/BarChart.xccheckout index c5b24be..ffa89ac 100644 --- a/BarChart.xcodeproj/project.xcworkspace/xcshareddata/BarChart.xccheckout +++ b/BarChart.xcodeproj/project.xcworkspace/xcshareddata/BarChart.xccheckout @@ -5,34 +5,34 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - EA166A49-32C2-4993-AAE8-DD8809560EDC + 1035916B-4E61-4D89-BC0C-5B9204A984EE IDESourceControlProjectName BarChart IDESourceControlProjectOriginsDictionary - E19D7A37-F6B2-41CB-86D9-09D5E23DC124 - https://github.com/marcelobraga/barChart.git + DE79D932-47D1-4F67-83DB-EFBBBB133D2E + ssh://github.com/lduraes/barChart.git IDESourceControlProjectPath BarChart.xcodeproj/project.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary - E19D7A37-F6B2-41CB-86D9-09D5E23DC124 + DE79D932-47D1-4F67-83DB-EFBBBB133D2E ../.. IDESourceControlProjectURL - https://github.com/marcelobraga/barChart.git + ssh://github.com/lduraes/barChart.git IDESourceControlProjectVersion 110 IDESourceControlProjectWCCIdentifier - E19D7A37-F6B2-41CB-86D9-09D5E23DC124 + DE79D932-47D1-4F67-83DB-EFBBBB133D2E IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - E19D7A37-F6B2-41CB-86D9-09D5E23DC124 + DE79D932-47D1-4F67-83DB-EFBBBB133D2E IDESourceControlWCCName barChart diff --git a/BarChart.xcodeproj/project.xcworkspace/xcuserdata/lduraes.xcuserdatad/UserInterfaceState.xcuserstate b/BarChart.xcodeproj/project.xcworkspace/xcuserdata/lduraes.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8a0d8a47dc7aa4afbe8cd454c5b825c3f0d16f92 GIT binary patch literal 12733 zcmcgycYKpo_rD|QNYXTcrcK)HW)-?ypr9z7P-Y=zlvUE?p$()-Nm9zx8(9JZDkzGJ zw#abcz`c;4;>3x#aU+TYaK64M{?3!9=@9hw58u~*B*}BnJ?GqW?^)mbG_?4

Tfw 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 + + + + + + + + diff --git a/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/BarChart.xcscheme b/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/BarChart.xcscheme new file mode 100644 index 0000000..7423247 --- /dev/null +++ b/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/BarChart.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/xcschememanagement.plist b/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..0b56442 --- /dev/null +++ b/BarChart.xcodeproj/xcuserdata/lduraes.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + BarChart.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9CCC91A31889909700521410 + + primary + + + 9CCC91C41889909700521410 + + primary + + + + + diff --git a/BarChart/Images.xcassets/popup.imageset/Contents.json b/BarChart/Images.xcassets/popup.imageset/Contents.json new file mode 100644 index 0000000..2b71a47 --- /dev/null +++ b/BarChart/Images.xcassets/popup.imageset/Contents.json @@ -0,0 +1,17 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "popup-items.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/BarChart/Images.xcassets/popup.imageset/popup-items.png b/BarChart/Images.xcassets/popup.imageset/popup-items.png new file mode 100644 index 0000000000000000000000000000000000000000..84a2674f0542a33c48ba56651fd6e82fb346b0c3 GIT binary patch literal 3206 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 B8>j#P literal 0 HcmV?d00001 diff --git a/BarChart/Library/DrawerBarChart.m b/BarChart/Library/DrawerBarChart.m index df5c19a..fc974a2 100644 --- a/BarChart/Library/DrawerBarChart.m +++ b/BarChart/Library/DrawerBarChart.m @@ -8,7 +8,8 @@ #import "DrawerBarChart.h" -#define MARGIN_VERTICAL 30 +//#define MARGIN_VERTICAL 30 +#define MARGIN_VERTICAL 55 #define MARGIN_HORIZONTAL 30 @implementation DrawerBarChart @@ -124,7 +125,8 @@ -(void) drawChart { if (self.fontSize == 0) { - self.fontSize = 8; + //self.fontSize = 8; + self.fontSize = 9; } UILabel * labelMax = [UILabel new]; @@ -225,6 +227,27 @@ -(void) drawChart { if (self.masterColor) { barDetail.color = self.masterColor; } + + //===== add a popup w/ the value of bar + + UIImageView *imgPopUp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"popup"]]; + float barWidth = frameBar.size.width; + float imgPadding = 0; + + if(barWidth > 30) { + imgPadding = (barWidth-30); + } + + imgPopUp.frame = CGRectMake(((imgPadding/2)+frameBar.origin.x),(frameBar.origin.y-30),(barWidth-imgPadding),25); + [self addSubview:imgPopUp]; + UILabel *uilValue = [[UILabel alloc] initWithFrame:CGRectMake((imgPopUp.frame.origin.x+5),(imgPopUp.frame.origin.y-2),imgPopUp.frame.size.width,imgPopUp.frame.size.height)]; + uilValue.text = [NSString stringWithFormat:@"%i",(int)barDetail.value]; + uilValue.textColor = [UIColor whiteColor]; + uilValue.font = [UIFont fontWithName:@"HelveticaNeue" size:13]; + [self addSubview:uilValue]; + + //===== + if (self.showGradient) { CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = bar.bounds; @@ -297,7 +320,8 @@ -(void) drawChart { [labelTitle setFont:[UIFont boldSystemFontOfSize:self.fontSize]]; if (self.rotate45Degress) { [labelTitle setTransform:CGAffineTransformMakeRotation(-M_PI_4)]; - [labelTitle setTextAlignment:NSTextAlignmentRight]; + //[labelTitle setTextAlignment:NSTextAlignmentRight]; + [labelTitle setTextAlignment:NSTextAlignmentLeft]; } else if (self.rotate90Degress) { [labelTitle setTransform:CGAffineTransformMakeRotation(-M_PI_2)]; [labelTitle setTextAlignment:NSTextAlignmentRight]; @@ -305,10 +329,14 @@ -(void) drawChart { [labelTitle setTextAlignment:NSTextAlignmentCenter]; } CGRect frameTitle = labelTitle.frame; - frameTitle.origin.x = originX; - frameTitle.origin.y = frameBar.origin.y + frameBar.size.height + 5 ; - frameTitle.origin.y += 5; - frameTitle.size.width = widthBar; + //frameTitle.origin.x = originX; + //frameTitle.origin.y = frameBar.origin.y + frameBar.size.height + 5 ; + //frameTitle.origin.y += 5; + //frameTitle.size.width = widthBar; + frameTitle.origin.x = (originX-30); + frameTitle.origin.y = (frameBar.origin.y+frameBar.size.height+10); + frameTitle.size.width = 140; + if (self.abortRotate) { frameTitle.size.height = 25; } else if (self.rotate90Degress) { From 06a62a5c50c0f4e5059d06e1018b6994153c2d1f Mon Sep 17 00:00:00 2001 From: Luiz Duraes Date: Mon, 24 Feb 2014 15:17:19 -0300 Subject: [PATCH 2/2] Added resetChart method... --- BarChart.xcodeproj/project.pbxproj | 2 +- .../UserInterfaceState.xcuserstate | Bin 12733 -> 18314 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 18 -- BarChart/Library/DrawerBarChart.h | 8 +- BarChart/Library/DrawerBarChart.m | 237 +++++++++--------- 5 files changed, 118 insertions(+), 147 deletions(-) diff --git a/BarChart.xcodeproj/project.pbxproj b/BarChart.xcodeproj/project.pbxproj index b05a46a..d82b799 100644 --- a/BarChart.xcodeproj/project.pbxproj +++ b/BarChart.xcodeproj/project.pbxproj @@ -88,8 +88,8 @@ 9C88AFC5188D76E9005441A8 /* BarChartLib */ = { isa = PBXGroup; children = ( - 9CCAAE5D18AE568A0034F4C4 /* DrawerBarChart.m */, 9CCAAE5E18AE568A0034F4C4 /* DrawerBarChart.h */, + 9CCAAE5D18AE568A0034F4C4 /* DrawerBarChart.m */, 9CCAAE5F18AE568A0034F4C4 /* BarDetail.h */, 9CCAAE6018AE568A0034F4C4 /* BarDetail.m */, ); diff --git a/BarChart.xcodeproj/project.xcworkspace/xcuserdata/lduraes.xcuserdatad/UserInterfaceState.xcuserstate b/BarChart.xcodeproj/project.xcworkspace/xcuserdata/lduraes.xcuserdatad/UserInterfaceState.xcuserstate index 8a0d8a47dc7aa4afbe8cd454c5b825c3f0d16f92..feebd4afce7cd542d40088a2f32a5e973c3d3a17 100644 GIT binary patch literal 18314 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 G=)TL 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 N1y=rd=wIix{{u(s0So{D delta 7087 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 fKLR-;>=8*3Z6n(I`#(fT - - - - - - diff --git a/BarChart/Library/DrawerBarChart.h b/BarChart/Library/DrawerBarChart.h index 7dca3b6..8b35ed1 100644 --- a/BarChart/Library/DrawerBarChart.h +++ b/BarChart/Library/DrawerBarChart.h @@ -7,9 +7,8 @@ // #import -#import "BarDetail.h" - +@class BarDetail; @class DrawerBarChart; @protocol DrawerBarChartDelegate @@ -20,8 +19,6 @@ @end - - @interface DrawerBarChart : UIView { NSMutableArray * arrayBar; } @@ -39,12 +36,11 @@ @property (nonatomic, assign) BOOL abortRotate; @property (nonatomic, assign) NSString * title; @property (nonatomic, assign) UIColor * masterColor; -@property (nonatomic, assign) int barSize; @property(assign,nonatomic) iddelegate; -(void) drawChart; -(void) initChart; +-(void)resetChart; -(void) setBar; - @end diff --git a/BarChart/Library/DrawerBarChart.m b/BarChart/Library/DrawerBarChart.m index fc974a2..91a5e52 100644 --- a/BarChart/Library/DrawerBarChart.m +++ b/BarChart/Library/DrawerBarChart.m @@ -7,41 +7,33 @@ // #import "DrawerBarChart.h" +#import "BarDetail.h" -//#define MARGIN_VERTICAL 30 #define MARGIN_VERTICAL 55 #define MARGIN_HORIZONTAL 30 @implementation DrawerBarChart -- (id)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - // Initialization code +#pragma mark - Public methods + +-(void) clickBar : (UIButton *) btn { + if((self.delegate) && ([self.delegate respondsToSelector:@selector(didSelectBar: )])) { + [self.delegate didSelectBar:[arrayBar objectAtIndex:btn.tag]]; } - return self; } -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect +- (UIColor *)darkerColorForColor:(UIColor *)c { - // Drawing code -} -*/ - - --(id) init { - self = [super init]; - self.barDetail = [BarDetail new]; - return self; + CGFloat r, g, b, a; + if ([c getRed:&r green:&g blue:&b alpha:&a]) + return [UIColor colorWithRed:MAX(r - 0.9, 0.0) + green:MAX(g - 0.9, 0.0) + blue:MAX(b - 0.9, 0.0) + alpha:a]; + return nil; } - -(void) drawChart { - if (!self.lineColor) { self.lineColor = [UIColor blackColor]; } @@ -49,7 +41,6 @@ -(void) drawChart { [self getMaxValue]; [self getMinValue]; - UIView * limitVerticalView = [UIView new]; UIView * limiteHorizontalView = [UIView new]; CGRect frameVertical = limitVerticalView.frame; @@ -70,7 +61,6 @@ -(void) drawChart { limiteHorizontalView.backgroundColor = self.lineColor; limiteHorizontalView.frame = frameHorizontal; - UIView * lineViewTop = [UIView new]; UIView * lineViewTop2 = [UIView new]; UIView * lineViewMiddle = [UIView new]; @@ -85,8 +75,6 @@ -(void) drawChart { lineViewTop.alpha = .1; lineViewTop.frame = frameLineTop; - - CGRect frameLineTop2 = lineViewTop2.frame; frameLineTop2.size.width = frameHorizontal.size.width; frameLineTop2.origin.y = frameVertical.origin.y + (frameVertical.size.height / 4); @@ -104,7 +92,7 @@ -(void) drawChart { lineViewMiddle.backgroundColor = [UIColor blackColor]; lineViewMiddle.alpha = .1; lineViewMiddle.frame = frameLineMiddle; - + CGRect frameLineBottom = lineViewBottom.frame; frameLineBottom.size.width = frameHorizontal.size.width; frameLineBottom.origin.y = frameLineMiddle.origin.y + (frameVertical.size.height / 4); @@ -114,8 +102,6 @@ -(void) drawChart { lineViewBottom.alpha = .1; lineViewBottom.frame = frameLineBottom; - - [self addSubview:lineViewTop]; [self addSubview:lineViewTop2]; [self addSubview:lineViewMiddle]; @@ -123,9 +109,7 @@ -(void) drawChart { [self addSubview:limitVerticalView]; [self addSubview:limiteHorizontalView]; - if (self.fontSize == 0) { - //self.fontSize = 8; self.fontSize = 9; } @@ -140,7 +124,7 @@ -(void) drawChart { labelMax.frame = frameLabelMax; labelMax.text = [NSString stringWithFormat:@"%i", self.maxValue]; [self addSubview:labelMax]; - + UILabel * labelMax2 = [UILabel new]; [labelMax2 setFont:[UIFont systemFontOfSize:self.fontSize]]; labelMax2.textColor = self.lineColor; @@ -202,15 +186,9 @@ -(void) drawChart { int originX = frameLineTop.origin.x + 10; int widthBar = limiteHorizontalView.frame.size.width / arrayBar.count; - if (self.barSize != 0) { - widthBar = self.barSize; - } - int index = 0; + for (BarDetail * barDetail in arrayBar) { - - - double heightBar = barDetail.value * heightDefinition; double heightSubBar = 0; if (barDetail.subValue != 0) { @@ -222,15 +200,25 @@ -(void) drawChart { frameBar.origin.x = originX; frameBar.origin.y = frameHorizontal.origin.y - heightBar; frameBar.size.width = widthBar - 10; + + //===== reduce bar width + + if(frameBar.size.width > 40) { + frameBar.size.width = 30; + } + + //===== + frameBar.size.height = heightBar + 1; bar.frame = frameBar; + if (self.masterColor) { barDetail.color = self.masterColor; } - //===== add a popup w/ the value of bar + //===== add a popup image above a bar including its value - UIImageView *imgPopUp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"popup"]]; + UIImageView *imgPopUp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"popup-item.png"]]; float barWidth = frameBar.size.width; float imgPadding = 0; @@ -240,7 +228,7 @@ -(void) drawChart { imgPopUp.frame = CGRectMake(((imgPadding/2)+frameBar.origin.x),(frameBar.origin.y-30),(barWidth-imgPadding),25); [self addSubview:imgPopUp]; - UILabel *uilValue = [[UILabel alloc] initWithFrame:CGRectMake((imgPopUp.frame.origin.x+5),(imgPopUp.frame.origin.y-2),imgPopUp.frame.size.width,imgPopUp.frame.size.height)]; + UILabel *uilValue = [[UILabel alloc] initWithFrame:CGRectMake((imgPopUp.frame.origin.x+10),(imgPopUp.frame.origin.y-2),imgPopUp.frame.size.width,imgPopUp.frame.size.height)]; uilValue.text = [NSString stringWithFormat:@"%i",(int)barDetail.value]; uilValue.textColor = [UIColor whiteColor]; uilValue.font = [UIFont fontWithName:@"HelveticaNeue" size:13]; @@ -258,6 +246,7 @@ -(void) drawChart { } [self addSubview:bar]; + if (self.showBorder) { bar.layer.borderWidth = 1; bar.layer.borderColor = self.lineColor.CGColor; @@ -287,16 +276,15 @@ -(void) drawChart { subBar.backgroundColor = barDetail.subColor; } - subBar.layer.borderWidth = 1; if (self.showBorder) { subBar.layer.borderColor = self.lineColor.CGColor; } else { subBar.layer.borderColor = [self lighterColorForColor:barDetail.subColor].CGColor; } - + [self addSubview:subBar]; - + frameHorizontal.size.width += 5; limiteHorizontalView.frame = frameHorizontal; @@ -305,10 +293,8 @@ -(void) drawChart { btn.tag = index; [btn addTarget:self action:@selector(clickBar:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:btn]; - } - UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = frameBar; btn.tag = index; @@ -318,25 +304,30 @@ -(void) drawChart { UILabel * labelTitle = [UILabel new]; labelTitle.text = barDetail.title; [labelTitle setFont:[UIFont boldSystemFontOfSize:self.fontSize]]; + + CGRect frameTitle = labelTitle.frame; + //frameTitle.origin.x = originX; + //frameTitle.origin.y = frameBar.origin.y + frameBar.size.height + 5 ; + //frameTitle.origin.y += 5; + //frameTitle.size.width = widthBar; + frameTitle.origin.x = (originX-30); + frameTitle.origin.y = (frameBar.origin.y+frameBar.size.height+10); + frameTitle.size.width = [self getTextWidth:barDetail.title withFontName:@"HelveticaNeue" withFontSize:10]; + if (self.rotate45Degress) { - [labelTitle setTransform:CGAffineTransformMakeRotation(-M_PI_4)]; - //[labelTitle setTextAlignment:NSTextAlignmentRight]; + frameTitle.origin.x = (originX-50); + frameTitle.size.width *= 2; + [labelTitle setTransform:CGAffineTransformMakeRotation(-0.9)]; [labelTitle setTextAlignment:NSTextAlignmentLeft]; } else if (self.rotate90Degress) { [labelTitle setTransform:CGAffineTransformMakeRotation(-M_PI_2)]; [labelTitle setTextAlignment:NSTextAlignmentRight]; + frameTitle.origin.x = (originX-13); + frameTitle.origin.y = (frameBar.origin.y+frameBar.size.height+50); } else { [labelTitle setTextAlignment:NSTextAlignmentCenter]; } - CGRect frameTitle = labelTitle.frame; - //frameTitle.origin.x = originX; - //frameTitle.origin.y = frameBar.origin.y + frameBar.size.height + 5 ; - //frameTitle.origin.y += 5; - //frameTitle.size.width = widthBar; - frameTitle.origin.x = (originX-30); - frameTitle.origin.y = (frameBar.origin.y+frameBar.size.height+10); - frameTitle.size.width = 140; - + if (self.abortRotate) { frameTitle.size.height = 25; } else if (self.rotate90Degress) { @@ -344,15 +335,17 @@ -(void) drawChart { } else if (self.rotate45Degress) { frameTitle.size.height = 25; } + labelTitle.frame = frameTitle; labelTitle.backgroundColor = [UIColor clearColor]; + if (barDetail.titleColor) { labelTitle.textColor = barDetail.titleColor; } else { labelTitle.textColor = self.lineColor; } - [self addSubview:labelTitle]; + [self addSubview:labelTitle]; originX += widthBar ; index++; @@ -360,7 +353,7 @@ -(void) drawChart { if (self.title) { UILabel * labelTitle = [UILabel new]; - [labelTitle setFont:[UIFont boldSystemFontOfSize:10]]; + [labelTitle setFont:[UIFont boldSystemFontOfSize:15]]; CGRect frameTitle = labelTitle.frame; frameTitle.origin.x = MARGIN_HORIZONTAL; frameTitle.origin.y = 0; @@ -374,7 +367,6 @@ -(void) drawChart { [self addSubview:labelTitle]; } - [self bringSubviewToFront:lineViewTop]; [self bringSubviewToFront:lineViewTop2]; [self bringSubviewToFront:lineViewMiddle]; @@ -399,7 +391,7 @@ -(void) drawChart { self.layer.borderWidth = 1; } - if (self.showShadow) { + if(self.showShadow) { self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOffset = CGSizeMake(0,2); self.layer.shadowOpacity = 0.9; @@ -407,22 +399,6 @@ -(void) drawChart { } } - --(void) initChart { - self.barDetail = [BarDetail new]; - arrayBar = [NSMutableArray new]; - self.showBorder = NO; - self.abortRotate = YES; - self.showGradient = YES; - self.showShadow = NO; -} - --(void) setBar { - [arrayBar addObject:self.barDetail]; - self.barDetail = [BarDetail new]; -} - - -(void) getMaxValue { int maxValue = 0; for (BarDetail * barDetail in arrayBar) { @@ -433,15 +409,66 @@ -(void) getMaxValue { maxValue = barDetail.subValue; } } - self.maxValue = maxValue * 1.1; if (maxValue < 10) { self.maxValue = maxValue + 1; } else { self.maxValue = maxValue * 1.1; } +} + +-(void) getMinValue { + int minValue = 0; + BOOL firstOperation = YES; + for (BarDetail * barDetail in arrayBar) { + if (barDetail.value < minValue || firstOperation){ + minValue = barDetail.value; + firstOperation = NO; + } + } + + self.minValue = minValue; +} + +// calculate label's width according to font informed +-(int)getTextWidth:(NSString *)text withFontName:(NSString *)fontName withFontSize:(float)fontSize { + NSString *label = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + int lblWidth = [label boundingRectWithSize:CGSizeMake(285,4000) options:NSStringDrawingUsesFontLeading attributes:nil context:nil].size.width; + return lblWidth; +} + +-(void) initChart { + self.barDetail = [BarDetail new]; + arrayBar = [NSMutableArray new]; + self.showBorder = NO; + self.abortRotate = YES; + self.showGradient = YES; + self.showShadow = NO; } +- (UIColor *)lighterColorForColor:(UIColor *)c +{ + CGFloat r, g, b, a; + if ([c getRed:&r green:&g blue:&b alpha:&a]) + return [UIColor colorWithRed:MIN(r + 0.6, 1.0) + green:MIN(g + 0.6, 1.0) + blue:MIN(b + 0.6, 1.0) + alpha:a]; + return nil; +} + +-(void)resetChart { + self.barDetail = nil; + arrayBar = nil; + self.showBorder = NO; + self.abortRotate = NO; + self.showGradient = NO; + self.showShadow = NO; + + for(UIView *view in self.subviews) { + [view removeFromSuperview]; + } +} -(void) setAbortRotate:(BOOL)abortRotate { if (abortRotate) { @@ -451,6 +478,10 @@ -(void) setAbortRotate:(BOOL)abortRotate { } } +-(void) setBar { + [arrayBar addObject:self.barDetail]; + self.barDetail = [BarDetail new]; +} -(void) setRotate45Degress:(BOOL)rotate45Degress { if (rotate45Degress) { @@ -460,7 +491,6 @@ -(void) setRotate45Degress:(BOOL)rotate45Degress { } } - -(void) setRotate90Degress:(BOOL)rotate90Degress { if (rotate90Degress) { _abortRotate = NO; @@ -469,49 +499,12 @@ -(void) setRotate90Degress:(BOOL)rotate90Degress { } } +#pragma mark - Lifecycle methods --(void) getMinValue { - int minValue = 0; - BOOL firstOperation = YES; - for (BarDetail * barDetail in arrayBar) { - if (barDetail.value < minValue || firstOperation){ - minValue = barDetail.value; - firstOperation = NO; - } - } - self.minValue = minValue; -} - - --(void) clickBar : (UIButton *) btn { - - if((self.delegate) && ([self.delegate respondsToSelector:@selector(didSelectBar: )])) { - [self.delegate didSelectBar:[arrayBar objectAtIndex:btn.tag]]; - } - -} - - -- (UIColor *)darkerColorForColor:(UIColor *)c -{ - CGFloat r, g, b, a; - if ([c getRed:&r green:&g blue:&b alpha:&a]) - return [UIColor colorWithRed:MAX(r - 0.9, 0.0) - green:MAX(g - 0.9, 0.0) - blue:MAX(b - 0.9, 0.0) - alpha:a]; - return nil; +-(id) init { + self = [super init]; + self.barDetail = [BarDetail new]; + return self; } - -- (UIColor *)lighterColorForColor:(UIColor *)c -{ - CGFloat r, g, b, a; - if ([c getRed:&r green:&g blue:&b alpha:&a]) - return [UIColor colorWithRed:MIN(r + 0.6, 1.0) - green:MIN(g + 0.6, 1.0) - blue:MIN(b + 0.6, 1.0) - alpha:a]; - return nil; -} @end