| // | 
| //  JHWaveChart.m | 
| //  JHChartDemo | 
| // | 
| //  Created by cjatech-简豪 on 16/4/13. | 
| //  Copyright © 2016年 JH. All rights reserved. | 
| // | 
|   | 
| #import "JHWaveChart.h" | 
|   | 
| @interface JHWaveChart() | 
|   | 
|   | 
| @property (nonatomic,strong) NSArray * yLineDataArr; | 
| @property (assign , nonatomic) JHWaveChartType  waveChartType ; | 
| @property (assign , nonatomic) CGFloat  perXLength ; | 
| @property (assign , nonatomic) CGFloat  xLength ; | 
| @property (assign , nonatomic) CGFloat  yLength ; | 
| @property (assign , nonatomic) CGPoint  originPoint ; | 
| @end | 
|   | 
|   | 
| @implementation JHWaveChart | 
|   | 
|   | 
| -(instancetype)initWithFrame:(CGRect)frame andType:(JHWaveChartType)waveChartType{ | 
|      | 
|     if (self = [super initWithFrame:frame]) { | 
|         self.backgroundColor = [UIColor whiteColor]; | 
|         _waveChartType = waveChartType; | 
|         _xLineDataArr = @[@0,@1,@2,@3,@4,@5,@6,@7]; | 
|         _xAndYLineColor = [UIColor darkGrayColor]; | 
|         self.contentInsets = UIEdgeInsetsMake(10, 10, 10, 10); | 
|     } | 
|      | 
|     return self; | 
| } | 
|   | 
|   | 
|   | 
|   | 
| - (void)countPerXandPerYLength{ | 
|     _xLength = CGRectGetWidth(self.frame) - self.contentInsets.left - self.contentInsets.right; | 
|     _yLength = CGRectGetHeight(self.frame) - self.contentInsets.top - self.contentInsets.bottom; | 
|      | 
|     if (_xLineDataArr.count) { | 
|         _perXLength = _xLength/(_xLineDataArr.count-1); | 
|     } | 
|      | 
|     switch (_waveChartType) { | 
|         case JHWaveChartUpType: | 
|         { | 
|             _originPoint = P_M(self.contentInsets.left, CGRectGetHeight(self.frame) - self.contentInsets.bottom); | 
|              | 
|         } | 
|             break; | 
|         case JHWaveChartUpAndDownType: | 
|         { | 
|              | 
|         } | 
|             break; | 
|         default: | 
|             break; | 
|     } | 
|      | 
|      | 
| } | 
|   | 
|   | 
| - (void)drawRect:(CGRect)rect { | 
|   | 
|     CGContextRef context = UIGraphicsGetCurrentContext(); | 
|     [self countPerXandPerYLength]; | 
|     if (_xLineDataArr.count) { | 
|         /* 绘制X轴 */ | 
|         [self drawXLineWithContext:context]; | 
|          | 
|     } | 
|      | 
|      | 
| } | 
|   | 
| /** | 
|  *  绘制X轴 | 
|  * | 
|  */ | 
| - (void)drawXLineWithContext:(CGContextRef)contex{ | 
|      | 
|     [self drawLineWithContext:contex andStarPoint:P_M(self.contentInsets.left, CGRectGetHeight(self.frame)-self.contentInsets.bottom) andEndPoint:P_M(CGRectGetWidth(self.frame)-self.contentInsets.right, CGRectGetHeight(self.frame)-self.contentInsets.bottom) andIsDottedLine:NO andColor:_xAndYLineColor]; | 
|      | 
|     for (NSInteger i =0 ; i<_xLineDataArr.count ; i++) { | 
|          | 
|         [self drawLineWithContext:contex andStarPoint:P_M(i*_perXLength, _originPoint.y) andEndPoint:P_M(i*_perXLength, _originPoint.y-3) andIsDottedLine:NO andColor:_xAndYLineColor]; | 
|         CGFloat len = [self getTextWithWhenDrawWithText:_xLineDataArr[i]]; | 
|         [self drawText:_xLineDataArr[i] andContext:contex atPoint:P_M(i*_perXLength-len/2+_originPoint.x, _originPoint.y+5) WithColor:_xAndYLineColor andFontSize:8]; | 
|          | 
|     } | 
|      | 
| } | 
|   | 
| -(void)setValueDataArr:(NSArray *)valueDataArr{ | 
|      | 
|      | 
|     _valueDataArr = valueDataArr; | 
|      | 
|     [self setNeedsDisplay]; | 
|      | 
| } | 
|   | 
|   | 
| @end |