// // JHRadarChart.m // JHChartDemo // // Created by 简豪 on 16/9/9. // Copyright © 2016年 JH. All rights reserved. // #import "JHRadarChart.h" @interface JHRadarChart () @property (nonatomic,assign)CGFloat chartRadius; @property (nonatomic,strong)NSMutableArray * drawPointArray; @property (nonatomic,strong)NSMutableArray * baseDrawPointArray; @end @implementation JHRadarChart -(NSMutableArray *)drawPointArray{ if (!_drawPointArray) { _drawPointArray = [NSMutableArray array]; } return _drawPointArray; } -(NSMutableArray *)baseDrawPointArray{ if (!_baseDrawPointArray) { _baseDrawPointArray = [NSMutableArray array]; } return _baseDrawPointArray; } -(void)setLayerCount:(NSInteger)layerCount{ if (layerCount<=0) { return; } _layerCount = layerCount; } -(instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { self.layerCount = 3; self.chartRadius = (self.frame.size.height - 50 * 2) / 2.0; self.chartOrigin = CGPointMake(CGRectGetWidth(self.frame) / 2.0, CGRectGetHeight(self.frame) / 2.0); self.layerFillColor = [UIColor colorWithWhite:0.5 alpha:0.3]; self.layerBoardColor = [UIColor colorWithWhite:0.5 alpha:0.3]; self.speraLineColor = [UIColor whiteColor]; self.perfectNumber = 100.0; self.descTextFont = [UIFont systemFontOfSize:14]; self.descTextColor = [UIColor darkGrayColor]; } return self; } /** * 初始化点数组 */ - (void)configDrawingData{ if (self.valueDataArray.count==0) { return; } CGFloat perAngle = M_PI * 2 / self.valueDescArray.count; for (NSInteger i = 0; iself.perfectNumber?self.perfectNumber:value); CGPoint cachePoint = CGPointMake(self.chartOrigin.x + value / self.perfectNumber * self.chartRadius * sin(j * perAngle), self.chartOrigin.y - value / self.perfectNumber * self.chartRadius * cos(j * perAngle)); [cacheArray addObject:[NSValue valueWithCGPoint:cachePoint]]; } [self.drawPointArray addObject:[cacheArray copy]]; } } - (void)configBaseViewDataArray{ [self.baseDrawPointArray removeAllObjects]; CGFloat perLength = self.chartRadius / self.layerCount; CGFloat perAngle = M_PI * 2 / self.valueDescArray.count; for (NSInteger i = 0; i=0; i--) { CAShapeLayer *shapeLayer = [CAShapeLayer layer]; UIBezierPath *path = [UIBezierPath bezierPath]; NSArray * cacheArray = [self.baseDrawPointArray objectAtIndex:i]; for (NSInteger j = 0; ji) { cacheColor = self.valueDrawFillColorArray[i]; } shaper.fillColor = cacheColor.CGColor; if (self.valueBoardColorArray.count>i) { cacheColor = self.valueBoardColorArray[i]; }else{ cacheColor = [UIColor clearColor]; } shaper.strokeColor = cacheColor.CGColor; [self.layer addSublayer:shaper]; } } -(void)showAnimation{ [self configBaseViewDataArray]; [self configDrawingData]; [self drawBaseView]; [self drawValueView]; } @end