前言:相信很多開(kāi)發(fā)者會(huì)見(jiàn)過(guò)很多數(shù)據(jù)要在雷達(dá)圖上展示逗载,也自己使用過(guò)一些第三方或者直接封裝。但是,有些第三方并不能很好地滿足項(xiàng)目需要,自己就索性封裝了一個(gè)沸伏。
可能跟大部分人封裝的一樣,主要功能如下:
- 可設(shè)置不超過(guò)20個(gè)元素的雷達(dá)圖
- 支持文字是否可點(diǎn)擊
- 支持分割值是否可顯示
- 支持文字的展示樣式
- 支持順時(shí)針逆時(shí)針繪制
來(lái)看下效果圖
1.如何使用
直接看代碼船万,使用起來(lái)非常簡(jiǎn)單街立。
NSMutableArray *items = [NSMutableArray array];
NSArray *values = @[@100,@50,@70,@30,@50,@40,@45,];
NSArray *descs = @[@"蘋(píng)果",@"香蕉",@"花生",@"橙子",@"車(chē)子",@"奶子",@"房子",];
for (int i = 0; i < values.count; i++) {
GBRadarChartDataItem *item = [GBRadarChartDataItem dataItemWithValue:[values[i] floatValue] description:descs[i]];
[items addObject:item];
}
GBRadarChart *radarChart = [[GBRadarChart alloc] initWithFrame:CGRectMake(0, 100, CGRectGetWidth(self.view.bounds), 400) items:items valueDivider:20];
radarChart.isShowGraduation = YES;
radarChart.labelStyle = GBRadarChartLabelStyleHorizontal;
[radarChart strokeChart];
[self.view addSubview:radarChart];
_radarChart = radarChart;
2.看下源代碼,了解一下實(shí)現(xiàn)過(guò)程
首先是.h中的屬性和方法
typedef NS_ENUM(NSUInteger, GBRadarChartLabelStyle) {
GBRadarChartLabelStyleCircle = 0, //圓環(huán)
GBRadarChartLabelStyleHorizontal, //水平
GBRadarChartLabelStyleHidden, //隱藏
};
@interface GBRadarChart : UIView
/**
初始化圖表
@param frame frame
@param items 模型數(shù)組
@param unitValue 均分值
@return 對(duì)象
*/
- (id)initWithFrame:(CGRect)frame items:(NSArray <GBRadarChartDataItem *> *)items valueDivider:(CGFloat)unitValue;
/** 繪制圖表 */
- (void)strokeChart;
/**
更新圖表
@param chartData 模型數(shù)組
*/
- (void)updateChartWithChartData:(NSArray <GBRadarChartDataItem *> *)chartData;
/** Array of `RadarChartDataItem` objects, one for each corner. */
@property (nonatomic, strong) NSArray <GBRadarChartDataItem *> *chartDataItems;
/** 展示的樣式 */
@property (nonatomic, assign) GBRadarChartLabelStyle labelStyle;
/** The unit of this chart ,default is 1 */
@property (nonatomic, assign) CGFloat valueDivider;
/** The maximum for the range of values to display on the chart */
@property (nonatomic, assign) CGFloat maxValue;
/** Default is gray. */
@property (nonatomic, strong) UIColor *webColor;
/** Default is green , with an alpha of 0.7 */
@property (nonatomic, strong) UIColor *plotFillColor;
/** Default is green*/
@property (nonatomic, strong) UIColor *plotStrokeColor;
/** Default is black */
@property (nonatomic, strong) UIColor *fontColor;
/** Default is orange */
@property (nonatomic, strong) UIColor *graduationColor;
/** Default is 12 */
@property (nonatomic, assign) CGFloat titleFontSize;
/** Tap the label will display detail value ,default is YES. */
@property (nonatomic, assign) BOOL canLabelTouchable;
/** is show graduation on the chart ,default is NO. */
@property (nonatomic, assign) BOOL isShowGraduation;
/** is display animated, default is YES */
@property (nonatomic, assign) BOOL displayAnimated;
/** 是否是順時(shí)針?lè)较蚶L制什湘,默認(rèn)是YES*/
@property (nonatomic, assign) BOOL clockwise;
@end
.m中代碼就不粘貼了长赞,直接上demo吧,里面有詳細(xì)的實(shí)現(xiàn)過(guò)程闽撤,也可以根據(jù)自己的需求在里面直接修改代碼得哆。
傳送門(mén):RadarChartDemo
大家有什么不理解的或者好的意見(jiàn),評(píng)論回復(fù)吧哟旗,我會(huì)盡量回復(fù)大家~~~