XYChart 0.0.1

XYChart 0.0.1

Maintained by XcodeYang.



XYChart 0.0.1

  • By
  • ZhipingYang

XYChart is designed for line & bar of charts which can compare mutiple datas in form styles, and limited the range of values to show, and so on.

LineChart BarChart
WechatIMG65 WechatIMG66
single datas in linechart single datas in linechart
WechatIMG67 WechatIMG68
mutiple datas in linechart mutiple datas in linechart
WechatIMG70 click
LineDotsClicked: show all if the dots closed BarClicked: custom click effects
gif gif
scrolling linechart (did set row width) scrolling barchart (did set row width)

Usage

@interface XYChart : UIView<XYChartContainer>

@property (nonatomic, weak, nullable) id<XYChartDataSource> dataSource;
@property (nonatomic, weak, nullable) id<XYChartDelegate> delegate;

@property (nonatomic, readonly) XYChartType chartType;

- (instancetype)initWithFrame:(CGRect)frame chartType:(XYChartType)chartType NS_DESIGNATED_INITIALIZER;

@end

方法1:

_chartView = [[XYChart alloc] initWithFrame:CGRectMake(0, 0, 300, 100) chartType:XYChartTypeLine];
_chartView.dataSource = self;
_chartView.delegate = self;
[self.view addSubview:_chartView];

方法2:

// ChartGroup is the child of XYChartDataSourceItem
_datasource = [[ChartGroup alloc] initWithStyle:XYChartTypeBar section:2 row:15 width:60];

_chartView = [[XYChart alloc] initWithFrame:CGRectMake(0, 0, 300, 100)    
chartType:XYChartTypeLine];
_chartView.dataSource = _datasource;
[self.view addSubview:_chartView];

XYChartDataSource

@protocol XYChartDataSource

// 多少条并行对比数据,折线图表现多条线,柱状图表现一列中有几条柱状图
- (NSUInteger)numberOfSectionsInChart:(XYChart *)chart;

// 完整的周期内,数据的个数,横向列数
- (NSUInteger)numberOfRowsInChart:(XYChart *)chart;

// x坐标的标题
- (NSAttributedString *)chart:(XYChart *)chart titleOfRowAtIndex:(NSUInteger)index;

// y坐标的标题
- (NSAttributedString *)chart:(XYChart *)chart titleOfSectionAtValue:(CGFloat)sectionValue;

// index下的数据模型
- (id<XYChartItem>)chart:(XYChart *)chart itemOfIndex:(NSIndexPath *)index;

// 标记y轴方向高亮区间
- (XYRange)visibleRangeInChart:(XYChart *)chart;

// y轴方向分段,5就分5段
- (NSUInteger)numberOfLevelInChart:(XYChart *)chart;

// 横向一栏的宽度
- (CGFloat)rowWidthOfChart:(XYChart *)chart;

// 自适应平均分横向栏目的宽度
- (BOOL)autoSizingRowInChart:(XYChart *)chart;

@end

XYChartDelegate

@protocol XYChartDelegate

- (BOOL)chart:(XYChart *)chart shouldShowMenu:(NSIndexPath *)index;

- (void)chart:(XYChart *)chart itemDidClick:(id<XYChartItem>)item;

- (CAAnimation *)chart:(XYChart *)chart clickAnimationOfIndex:(NSIndexPath *)index;

@end