【发布时间】:2015-06-19 09:42:25
【问题描述】:
我正在使用 Core Plot 创建一个饼图。我需要向它添加动画,以便切片从 0 度增长到 360 度。我正在使用以下方法制作动画:
-(void)animatePlot:(CPTPlot *)pPlot
animated:(BOOL)bAnimated
{
[[CPTAnimation sharedInstance] removeAllAnimationOperations];
if (bAnimated) {
CPTPieChart *pPieChart = (CPTPieChart *)pPlot;
[CPTAnimation animate:pPieChart
property:@"startAngle"
from:0
to:M_PI*2
duration:5];
}
有两个问题: 1. 饼图的最后一部分有时会完全动画化。所以动画结束后我得到一个不完整的切片。 2. 切片的数据标签表示实际位于饼直径另一端(相隔 180 度)的值
我怎样才能摆脱上述问题并正确地为饼图制作动画?我不希望整个饼图旋转。我只需要切片从 0 增长到它们各自的大小。
第二次编辑
我发现了问题所在。现在使用以下代码:
CPTPieChart *pPieChart = (CPTPieChart *)pPlot;
pPieChart.startAngle = M_PI;
[CPTAnimation animate:pPieChart
property:@"endAngle"
from:-M_PI
to:M_PI
duration:0.5];
图表从 180 度开始动画。这解决了数据标签问题。但是,我仍然遇到最后一个切片没有完全动画化的第一个问题。我注意到动画持续时间很短时会更加明显。以下是截图。这是动画停止的地方:
【问题讨论】:
-
问题已修复...必须将 CPTAnimationOperation 的委托设置为 self。然后在 animationDIdFinish 方法中,设置饼图的结束角度。现在饼图完全动画化了。