在iOS Charts库中,与BarChartDataSet
类不同,PieChartDataSet
不包含任何属性highlightAlpha
,可用于为饼图上的选定切片设置不同的alpha图表。
虽然可以引入这样的属性并使用CGContextSetAlpha()
我们可以修改突出显示的切片的透明度,但我想在不对库代码进行任何更改的情况下执行此操作。怎么办呢?
答案 0 :(得分:0)
我检查了代码,目前它不支持这个。
public override func drawHighlighted(context context: CGContext, indices: [ChartHighlight])
{
...
CGContextSetFillColorWithColor(context, set.colorAt(xIndex).CGColor)
...
}
这只是读取数据集颜色并用它来突出显示。我认为欢迎您为这样的功能提交PR。或者我有空的时候会这样做。
对于您来说,更改源代码似乎是目前唯一的选择。这就是为什么我认为你贡献的好处。
答案 1 :(得分:0)
目前,我已使用委托方法解决了问题:
- (void)chartValueSelected:(ChartViewBase * __nonnull)chartView
entry:(ChartDataEntry * __nonnull)entry
dataSetIndex:(NSInteger)dataSetIndex
highlight:(ChartHighlight * __nonnull)highlight
{
PieChartView *pPieChartView = (PieChartView *)chartView;
PieChartDataSet *pDataSet = (PieChartDataSet *)[pPieChartView.data.dataSets objectAtIndex:dataSetIndex];
NSMutableArray *pColors = [[NSMutableArray alloc] initWithArray:pDataSet.colors
copyItems:YES];
for (int nIndex = 0; nIndex < pColors.count; nIndex++) {
UIColor *pColor = [pColors objectAtIndex:nIndex];
if (nIndex == entry.xIndex) {
pColor = [pColor colorWithAlphaComponent:1];
}
else {
pColor = [pColor colorWithAlphaComponent:0.3];
}
[pColors replaceObjectAtIndex:nIndex
withObject:pColor];
}
pDataSet.colors = pColors;
}
就我而言,我加载了alpha分量小于1的切片。在突出显示切片时,alpha值更改为1.
如果highlightAlpha
类中引入了PieChartDataSet
属性,则可以实现相同的效果。在drawHighlighted
方法中,需要调用CGContextSetAlpha(context, highlightAlpha)
。 BarChartDataSet
也有高亮颜色,PieChartDataSet
中没有。