Core-Plot-Piechart-Scheibe Farbe
Frage
Ich verwende eine Kernhandlung in einem meiner iPhone -Projekte. Ist es möglich, die Farbe für eine ausgewählte Scheibe in einem Kreisdiagramm (unter Verwendung von CppiechartDataSource, CppiechartDelegate) zu ändern?
Lösung
Implementieren Sie die folgende Methode in Ihrer Kreisdiagramm -Datenquelle:
-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
CPFill kann eine Farbe, ein Bild oder eine Gradientin sein.
Andere Tipps
In Ihrer .h -Datei
#import "CPTPieChart.h"
@interface YourViewController : UIViewController<CPTPlotDataSource,CPTPieChartDataSource, CPTPieChartDelegate>
{
}
in Ihrer .m -Datei
-(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;
}
Es wird Piechart -Slice -Farbe ändern. Vielen Dank
Ich habe dies meiner .m -Datei hinzugefügt (die die Datenquellendatei für das Kreisdiagramm ist). Die Farben sind hässlich - haben sie nur verwendet, um zu testen, da sie sich wirklich von den Standardeinstellungen unterscheiden. Und es gibt nur drei Scheiben in meinem Diagramm, daher die hartcodierten 3 Farben. Ich fand die Kernplot -Dokumentation für all das hilfreich. Hier ist der Link zur Dokumentation der FillwithColor -Methode. Hinweis: Sie müssen CPT jetzt als Präfix verwenden, nicht als alter 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;
}
Entschuldigung, wenn ich den Antworteintrag durcheinander gebracht habe - dies ist mein erster Beitrag auf Stackoverflow
Schnelle Version:
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());
}
}