| | |
| | | |
| | | #import "JHLineChart.h" |
| | | #define kXandYSpaceForSuperView 20.0 |
| | | #define XlineItemMAXCount 8 |
| | | #define YlineItemMAXCount 8 |
| | | #define XlineItemMAXCount 10 |
| | | #define YlineItemMAXCount 10 |
| | | |
| | | @interface JHLineChart () |
| | | |
| | |
| | | _lineType = lineChartType; |
| | | _lineWidth = 0.5; |
| | | _xyFontSize = 7.0; |
| | | _numberFontSize = 7.0; |
| | | self.contentInsets = UIEdgeInsetsMake(10, 20, 10, 10); |
| | | _yLineDataArr = @[@"100",@"200",@"300",@"400",@"500",@"600",@"700",@"800"];//[NSMutableArray array]; |
| | | _xLineDataArr = [NSMutableArray array]; |
| | |
| | | switch (_lineChartQuadrantType) { |
| | | case JHLineChartQuadrantTypeFirstQuardrant: |
| | | { |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left, self.frame.size.height-self.contentInsets.bottom); |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+6, self.frame.size.height-self.contentInsets.bottom); |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeFirstAndSecondQuardrant: |
| | | { |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+_xLength/2, CGRectGetHeight(self.frame)-self.contentInsets.bottom); |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+_xLength/2+6, CGRectGetHeight(self.frame)-self.contentInsets.bottom); |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeFirstAndFouthQuardrant: |
| | | { |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left, self.contentInsets.top+_yLength/2); |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+6, self.contentInsets.top+_yLength/2); |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeAllQuardrant: |
| | | { |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+_xLength/2, self.contentInsets.top+_yLength/2); |
| | | self.chartOrigin = CGPointMake(self.contentInsets.left+_xLength/2+6, self.contentInsets.top+_yLength/2); |
| | | } |
| | | break; |
| | | |
| | |
| | | /* 绘制x与y轴 */ |
| | | - (void)drawXAndYLineWithContext:(CGContextRef)context |
| | | { |
| | | |
| | | switch (_lineChartQuadrantType) { |
| | | case JHLineChartQuadrantTypeFirstQuardrant:{ |
| | | |
| | |
| | | //NSString *aimStr = [NSString stringWithFormat:@"(%@,%@)",_xLineDataArr[i],_valueArr[m][i]]; |
| | | NSString *aimStr = [NSString stringWithFormat:@"%@",_valueArr[m][i]]; |
| | | |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:7.0 aimString:aimStr].width; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2, p.y - 10) WithColor:pointNumberColor andFontSize:7.0]; |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:_numberFontSize aimString:aimStr].width; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2+5, p.y - 15) WithColor:pointNumberColor andFontSize:_numberFontSize]; |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeFirstAndSecondQuardrant: |
| | |
| | | //NSString *aimStr = [NSString stringWithFormat:@"(%@,%@)",str,_valueArr[m][i]]; |
| | | NSString *aimStr = [NSString stringWithFormat:@"%@",_valueArr[m][i]]; |
| | | |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:7.0 aimString:aimStr].width; |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:_numberFontSize aimString:aimStr].width; |
| | | |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2, p.y - 10) WithColor:pointNumberColor andFontSize:7.0]; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2+5, p.y - 15) WithColor:pointNumberColor andFontSize:_numberFontSize]; |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeFirstAndFouthQuardrant: |
| | |
| | | //NSString *aimStr = [NSString stringWithFormat:@"(%@,%@)",_xLineDataArr[i],_valueArr[m][i]]; |
| | | NSString *aimStr = [NSString stringWithFormat:@"%@",_valueArr[m][i]]; |
| | | |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:7.0 aimString:aimStr].width; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2, p.y - 10) WithColor:pointNumberColor andFontSize:7.0]; |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:_numberFontSize aimString:aimStr].width; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2+5, p.y - 15) WithColor:pointNumberColor andFontSize:_numberFontSize]; |
| | | } |
| | | break; |
| | | case JHLineChartQuadrantTypeAllQuardrant: |
| | |
| | | //NSString *aimStr =[NSString stringWithFormat:@"(%@,%@)",str,_valueArr[m][i]]; |
| | | NSString *aimStr =[NSString stringWithFormat:@"%@",_valueArr[m][i]]; |
| | | |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:7.0 aimString:aimStr].width; |
| | | CGFloat length = [self sizeOfStringWithMaxSize:CGSizeMake(100, 25) textFont:_numberFontSize aimString:aimStr].width; |
| | | |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2, p.y - 10) WithColor:pointNumberColor andFontSize:7.0]; |
| | | [self drawText:aimStr andContext:context atPoint:P_M(p.x - length / 2+5, p.y - 15) WithColor:pointNumberColor andFontSize:_numberFontSize]; |
| | | } |
| | | break; |
| | | |