我正试图在我的iOS应用程序中实现一个条形图。我正在使用JBChartView。一切都很好,但是除了我用touchEvent按下它们时,没有颜色的条子。
有没有人有经验,这个特殊的插件,以帮助我使它正确工作?
谢谢
- (void)viewDidLoad
{
_barChartView = [[JBBarChartView alloc] init];
_barChartView.delegate = self;
_barChartView.dataSource = self;
_tableView.backgroundColor =[UIColor clearColor];
_barChartView.frame = CGRectMake(0,0,200,200);
_barChartView.backgroundColor = [UIColor clearColor];
[_barChartView reloadData];
[_barChart addSubview: _barChartView];
}
- (UIColor *)barSelectionColorForBarChartView:(JBBarChartView *)barChartView
{
return [UIColor greenColor]; // color of selection view
}
- (BOOL)slideNavigationControllerShouldDisplayLeftMenu
{
return YES;
}
- (UIColor *)barChartView:(JBBarChartView *)barChartView colorForBarViewAtIndex:(NSUInteger)index
{
return [UIColor greenColor];
}
- (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView
{
return 4;
}
- (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtAtIndex:(NSUInteger)index
{
return 100.0;
}发布于 2014-06-09 16:48:37
问题似乎在于JBBarChartView如何将这些值“正常化”。根据JBBarChartView.h的头文件
/**
* Height for a bar at a given index (left to right). There is no ceiling on the the height;
* the chart will automatically normalize all values between the overal min and max heights.
*
* @param barChartView The bar chart object requesting this information.
* @param index The 0-based index of a given bar (left to right, x-axis).
*
* @return The y-axis height of the supplied bar index (x-axis)
*/由于这种“正常化”--当所有的值都是相同的(100.0f) --它将它们全部正常化为0,因此没有显示条形图。幸运的是,它是开源的,所以您只需要打开实现文件并做一些修改:
- (CGFloat)normalizedHeightForRawHeight:(NSNumber*)rawHeight
{
CGFloat minHeight = [self minimumValue];
CGFloat maxHeight = [self maximumValue];
CGFloat value = [rawHeight floatValue];
if ((maxHeight - minHeight) <= 0)
{
return self.availableHeight; // change this line to return the max height instead of 0
}
return ((value - minHeight) / (maxHeight - minHeight)) * [self availableHeight];
}发布于 2015-08-10 18:52:15
解决问题的正确方法是在图表上提供一个最小值。
请查看@JBChartView的文档:
/**
* The minimum and maxmimum values of the chart.
* If no value(s) are supplied:
*
* minimumValue = chart's data source min value.
* maxmimumValue = chart's data source max value.
*
* If value(s) are supplied, they must be >= 0, otherwise an assertion will be thrown.
* The min/max values are clamped to the ceiling and floor of the actual min/max values of the chart's data source;
* for example, if a maximumValue of 20 is supplied & the chart's actual max is 100, then 100 will be used.
*
* For min/max modifications to take effect, reloadData must be called.
*/
@property (nonatomic, assign) CGFloat minimumValue;
@property (nonatomic, assign) CGFloat maximumValue;如果所有的数据都等于一个值(即。100),提供最小值为0,将确保所有条形图都以相等(可见)高度(相对于0)绘制。
希望这能有所帮助。
https://stackoverflow.com/questions/24123794
复制相似问题