From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/screendisplay/Classes/ThirdClass/JHChart/JHRadarChart.m |  270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 270 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/ThirdClass/JHChart/JHRadarChart.m b/screendisplay/screendisplay/Classes/ThirdClass/JHChart/JHRadarChart.m
new file mode 100755
index 0000000..c594a1a
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/ThirdClass/JHChart/JHRadarChart.m
@@ -0,0 +1,270 @@
+//
+//  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; i<self.valueDataArray.count; i++) {
+        
+        NSArray *valueArray = [self.valueDataArray objectAtIndex:i];
+        NSMutableArray *cacheArray = [NSMutableArray array];
+        
+        for (NSInteger j = 0; j<valueArray.count; j++) {
+            CGFloat value = [[valueArray objectAtIndex:j] floatValue];
+            
+            value = (value>self.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<self.layerCount; i++) {
+        
+        NSMutableArray *cacheArray = [NSMutableArray array];
+        CGFloat cacheLength = (i+1) * perLength;
+        for (NSInteger j = 0; j<self.valueDescArray.count; j++) {
+            
+            CGPoint cachePoint = CGPointMake(self.chartOrigin.x + cacheLength * sin(j * perAngle) , self.chartOrigin.y - cacheLength * cos(j * perAngle));
+            
+//            NSLog(@"-----%-----i== %ld     ======%@",j * perAngle,i,NSStringFromCGPoint(cachePoint));
+            NSValue *cacheValue = [NSValue valueWithCGPoint:cachePoint];
+            [cacheArray addObject:cacheValue];
+            
+            
+            if (i==0) {
+                
+                CGFloat width = [self sizeOfStringWithMaxSize:CGSizeMake(100, 20) textFont:self.descTextFont.pointSize aimString:self.valueDescArray[j]].width;
+                UILabel *cacheLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 20)];
+                cacheLabel.font = self.descTextFont;
+                cacheLabel.center = CGPointMake(self.chartOrigin.x + (self.chartRadius + width / 2 + 5) * sin(j * perAngle) ,self.chartOrigin.y - (self.chartRadius + 20 / 2 + 5) * cos(j * perAngle));
+                cacheLabel.text = self.valueDescArray[j];
+                cacheLabel.textColor = self.descTextColor;
+                [self addSubview:cacheLabel];
+            }
+
+            
+        }
+        
+        [self.baseDrawPointArray addObject:[cacheArray copy]];
+        [cacheArray removeAllObjects];
+        
+    }
+    
+    
+    
+}
+
+
+/**
+ *  ���������������������������
+ */
+- (void)drawBaseView{
+    for (NSInteger i = self.baseDrawPointArray.count-1; i>=0; i--) {
+        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
+        
+        UIBezierPath *path = [UIBezierPath bezierPath];
+        NSArray * cacheArray = [self.baseDrawPointArray objectAtIndex:i];
+        for (NSInteger j = 0; j<cacheArray.count; j++) {
+            
+            NSValue *cacheValue = [cacheArray objectAtIndex:j];
+            CGPoint currentCachePoint = [cacheValue CGPointValue];
+            
+            
+            NSLog(@"i== %ld     ======%@",i,NSStringFromCGPoint(currentCachePoint));
+            if (j==0) {
+                [path moveToPoint:currentCachePoint];
+            }else if(j==cacheArray.count){
+                [path addLineToPoint:currentCachePoint];
+                [path moveToPoint:currentCachePoint];
+            }else{
+                [path addLineToPoint:currentCachePoint];
+            }
+        }
+        
+        [path closePath];
+        shapeLayer.path = path.CGPath;
+        shapeLayer.fillColor = self.layerFillColor.CGColor;
+        shapeLayer.strokeColor = self.layerBoardColor.CGColor;
+        [self.layer addSublayer:shapeLayer];
+    }
+    
+    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
+    
+    UIBezierPath *path = [UIBezierPath bezierPath];
+    [path closePath];
+    [path moveToPoint:self.chartOrigin];
+    NSMutableArray * cacheArray = [self.baseDrawPointArray lastObject];
+    for (NSInteger j = 0; j<cacheArray.count; j++) {
+        NSValue *cacheValue = [cacheArray objectAtIndex:j];
+        CGPoint currentCachePoint = [cacheValue CGPointValue];
+        
+        [path addLineToPoint:currentCachePoint];
+        [path moveToPoint:self.chartOrigin];
+    }
+    shapeLayer.path = path.CGPath;
+    shapeLayer.strokeColor = self.speraLineColor.CGColor;
+    [self.layer addSublayer:shapeLayer];
+    
+    
+    
+
+}
+
+
+- (void)drawValueView{
+    
+    
+    if (self.drawPointArray.count==0) {
+        return;
+    }
+    
+    
+    for (NSInteger i = 0 ; i<self.drawPointArray.count; i++) {
+        
+        NSArray *cacheArray = [self.drawPointArray objectAtIndex:i];
+        UIBezierPath *path = [UIBezierPath bezierPath];
+        for (NSInteger j = 0; j<cacheArray.count; j++) {
+            
+            
+            
+            if (j==0) {
+                [path moveToPoint:[[cacheArray objectAtIndex:j] CGPointValue]];
+            }else{
+                [path addLineToPoint:[[cacheArray objectAtIndex:j] CGPointValue]];
+            }
+
+        }
+        [path closePath];
+        CAShapeLayer *shaper = [CAShapeLayer layer];
+        shaper.path = path.CGPath;
+        shaper.borderWidth = 1.0;
+        UIColor *cacheColor = [UIColor clearColor];
+        if (self.valueDrawFillColorArray.count>i) {
+            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

--
Gitblit v1.8.0