Я использую основной сюжет в одном из моих проектов iPhone. Можно ли изменить цвет для выбранного фрагмента в круговой диаграмме (используя CPPieChartDataSource, CPPieChartDelegate)?
Цвет среза PieChart Core-Plate
Ответ 1
Внесите следующий метод в источник данных pie chart:
-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
CPFill может быть цветом, изображением или градиентом.
Ответ 2
В вашем .h файле
#import "CPTPieChart.h"
@interface YourViewController : UIViewController<CPTPlotDataSource,CPTPieChartDataSource, CPTPieChartDelegate>
{
}
в вашем .m файле
-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index
{
CPTFill *areaGradientFill ;
if (index==0)
return areaGradientFill= [CPTFill fillWithColor:[CPTColor orangeColor]];
else if (index==1)
return areaGradientFill= [CPTFill fillWithColor:[CPTColor greenColor]];
else if (index==2)
return areaGradientFill= [CPTFill fillWithColor:[CPTColor yellowColor]];
return areaGradientFill;
}
Он изменит цвет среза PieChart. Благодаря
Ответ 3
Я добавил это в мой .m файл (который является файлом источника данных для круговой диаграммы). Цвета уродливые - просто использовали их для тестирования, поскольку они действительно отличаются от значений по умолчанию. И в моем графике есть только три среза, следовательно, жестко закодированные 3 цвета. Я нашел документацию Core Plot полезной для всего этого. Здесь ссылка на документацию метода fillWithColor. ПРИМЕЧАНИЕ. Теперь вам нужно использовать CPT как префикс, а не старый CP.
-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
{
CPTFill *color;
if (index == 0) {
color = [CPTFill fillWithColor:[CPTColor purpleColor]];
} else if (index == 1) {
color = [CPTFill fillWithColor:[CPTColor blueColor]];
} else {
color = [CPTFill fillWithColor:[CPTColor blackColor]];
}
return color;
}
Извините, если я испортил запись ответа - это мой первый пост в StackOverflow
Ответ 4
Быстрая версия:
func sliceFillForPieChart (pieChart: CPTPieChart, recordIndex: UInt) -> CPTFill {
switch (recordIndex+1) {
case 1:
return CPTFill(color:CPTColor.greenColor());
case 2:
return CPTFill(color:CPTColor.redColor());
default:
return CPTFill(color:CPTColor.orangeColor());
}
}