2015-05-04 24 views
1

我使用餅圖在我的xcode項目中實施了corePlot。我有麻煩的動畫。當切片被選中時,徑向偏移隨着動畫而改變。下面是代碼:動畫重新選擇的索引不起作用

- (void)pieChart:(CPTPieChart *)plot sliceWasSelectedAtRecordIndex:(NSUInteger)idx 
{ 
    if (self.selectedIndex == idx) 
    { 
     [self animateSelectedIndex:20 :0]; 
     self.selectedIndex = -1; 
    } 
    else 
    { 
     self.selectedIndex = idx; 
     [self animateSelectedIndex:0 :20]; 
    } 
} 

- (void)animateSelectedIndex:(CGFloat)from :(CGFloat)to 
{ 
    [CPTAnimation animate:self 
       property:@"sliceOffset" 
        from:from 
         to:to 
       duration:0.25 
      animationCurve:CPTAnimationCurveCubicInOut 
       delegate:nil]; 
} 

- (CGFloat)radialOffsetForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)idx 
{ 
    return idx == self.selectedIndex ? sliceOffset : 0.0; 
} 

- (void)setSliceOffset:(CGFloat)newOffset 
{ 
    if (newOffset != sliceOffset) { 
     sliceOffset = newOffset; 
     [self.graph reloadData]; 
    } 
} 

的問題是,當一個切片得到重新選擇,切片的徑向偏移變爲0,但它並沒有設置動畫爲0(當它從0到20它具有動畫效果,唯一的問題是當它從20變爲0時)

回答

0

清除selectedIndex會將徑向偏移量立即驅動爲零。直到動畫結束後才能清除它。在偏移量達到零之後,您可以使用動畫代理或在-setSliceOffset:中將其清除。