// // DVYBarView.m // xxxxx // // Created by Fire on 15/11/11. // Copyright © 2015年 DuoLaiDian. All rights reserved. // #import "DVYBarView.h" #import "UIView+Extension.h" #import "UIColor+Hex.h" #define random(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0] #define randomColor random(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256)) @interface DVYBarView () @property (strong, nonatomic) UIView *separate; @end @implementation DVYBarView - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // 垂直坐标轴 UIView *separate = [[UIView alloc] init]; self.separate = separate; [self addSubview:separate]; self.textFont = [UIFont systemFontOfSize:12]; } return self; } - (void)draw { self.backgroundColor = self.backColor; // 计算坐标轴的位置以及大小 // NSDictionary *attr = @{NSFontAttributeName : self.textFont}; // CGSize labelSize = [@"x" sizeWithAttributes:attr]; CGSize labelSize = CGSizeMake(self.barWidth, 29); self.separate.backgroundColor = self.axisColor; self.separate.x = self.width - 1; self.separate.width = 1; self.separate.y = 0; if (self.landspace) { self.separate.height = self.height - labelSize.height - self.xAxisTextGap; }else{ self.separate.height = self.height - self.xAxisTextGap; } // 为顶部留出的空白 CGFloat topMargin = 50; // Label做占据的高度 CGFloat allLabelHeight = self.height - topMargin - self.xAxisTextGap - labelSize.height; if (self.landspace) { allLabelHeight = self.height - topMargin - self.xAxisTextGap - labelSize.height; } else { allLabelHeight = self.height - topMargin - self.xAxisTextGap; } NSDictionary *attr = @{NSFontAttributeName : self.textFont}; CGSize yLabelSize = [@"x" sizeWithAttributes:attr]; // Label之间的间隙 CGFloat labelMargin = (allLabelHeight + yLabelSize.height - (self.numberOfYAxisElements + 1) * yLabelSize.height) / self.numberOfYAxisElements; // 移除所有的Label for (UILabel *label in self.subviews) { if ([label isKindOfClass:[UILabel class]]) { [label removeFromSuperview]; } } // 添加Label for (int i = 0; i < self.numberOfYAxisElements + 1; i++) { UILabel *label = [[UILabel alloc] init]; CGFloat avgValue = self.yAxisMaxValue / (self.numberOfYAxisElements); if (self.isPercent) { label.text = [NSString stringWithFormat:@"%.0f%%", avgValue * i]; }else{ label.text = [NSString stringWithFormat:@"%.0f", avgValue * i]; } label.text = @""; //label.backgroundColor = [UIColor redColor]; label.textAlignment = NSTextAlignmentRight;// UITextAlignmentRight; label.font = self.textFont; label.textColor = self.textColor; label.x = 0; label.height = yLabelSize.height; if (self.landspace) { label.y = self.height - labelSize.height - self.xAxisTextGap - (label.height + labelMargin) * i - label.height/2; } else { label.y = self.height - self.xAxisTextGap - (label.height + labelMargin) * i - label.height/2; } label.width = self.width - 1 - self.yAxisTextGap; // [self addSubview:label]; } //添加图例 UIView *LegendView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.width - 1 , self.height)]; [ self addSubview:LegendView]; //图例1 UIView *legendView1 = [[UIView alloc]initWithFrame:CGRectMake(0, 50, 20, 10)]; legendView1.centerX = LegendView.centerX; legendView1.backgroundColor =[UIColor colorWithHexString:@"#FEC591"]; ; [LegendView addSubview:legendView1]; //FEC591 UILabel *legendLabel1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 50 + 10 + 5, self.width - 1, 60)]; legendLabel1.textColor = [UIColor colorWithHexString:@"888888"]; legendLabel1.textAlignment = NSTextAlignmentCenter; legendLabel1.numberOfLines = 0; legendLabel1.font = [UIFont boldSystemFontOfSize:9]; legendLabel1.text = self.legendTitle1; [LegendView addSubview:legendLabel1]; //图例2 UIView *legendView2 = [[UIView alloc]initWithFrame:CGRectMake(0, 150, 20, 10)]; legendView2.centerX = LegendView.centerX; legendView2.backgroundColor = [UIColor colorWithHexString:@"#FD8B23"]; [LegendView addSubview:legendView2]; UILabel *legendLabel2 = [[UILabel alloc]initWithFrame:CGRectMake(0, 150 + 10 + 5, self.width - 1, 60)]; legendLabel2.textColor = [UIColor colorWithHexString:@"888888"]; legendLabel2.textAlignment = NSTextAlignmentCenter; legendLabel2.numberOfLines = 0; legendLabel2.font = [UIFont boldSystemFontOfSize:9]; legendLabel2.text = self.legendTitle2; [LegendView addSubview:legendLabel2]; } @end