2012-07-12 29 views
2

我試圖在覈心繪圖散點圖(如線圖)中縮放,以便縮放以查看。 CorePlot使用普通的CALayer來實現它的繪圖。CABasicAnimation CorePlot縮放有效

我使用的Core Animation如下來實現這一目標:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"affineTransform"]; 
animation.duration = 10; 
animation.removedOnCompletion = YES; 
animation.fillMode = kCAFillModeForwards; 
CGAffineTransform start = CGAffineTransformMakeScale(1, 0.1); 
CGAffineTransform end = CGAffineTransformMakeScale(1, 1); 
animation.fromValue = [NSValue valueWithCGAffineTransform:start]; 
animation.toValue = [NSValue valueWithCGAffineTransform:end]; 

[plot addAnimation:animation forKey:@"animation"]; 

問題是,這似乎並沒有工作。這是我第一次使用核心動畫,所以我想我只是做錯了什麼?

編輯 好吧,所以我發現我使用錯誤的keypath的問題。

我能得到現在的動畫,但它看起來奇怪:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; 
... 
animation.fromValue = [NSNumber numberWithFloat:0.1]; 
animation.toValue = [NSNumber numberWithFloat:1]; 

我想要做的是有動畫「向上擴展」所以那種綿延的地方。現在它從中心生長出來,這不是我想要的。任何想法如何實現?

+1

當你運行它會發生什麼? – Dustin 2012-07-12 14:49:07

+0

什麼都沒有發生。好像沒有動畫。我剛剛注意到CALayer上的'affineTransform'成員是一種方法而不是屬性,我猜關鍵路徑必須是屬性? – Imran 2012-07-12 14:52:02

回答

0

該變換是相對於圖層的anchorPoint。您可以通過將錨點設置爲(0.5,1,0)將其更改爲底部。請注意,圖層也會相對於錨點繪製,因此當您更改它時,它可能會在屏幕上改變它的位置。要將它放置在應該放置的位置,可以在更改錨點後設置框架,或者將位置設置爲底部(應該從底部縮放)。

+0

這種作品,但你說它確實改變了圖紙的位置。 「你的意思是」將位置設置在底部(它應該從哪裏縮放)「。 – Imran 2012-07-12 21:30:37

+0

位置通常位於中心,但是當您更改更改的錨點時。如果您的定位點是(0.5,1.0),那麼這是您視圖中較低的中心點。如果您知道下方中心點的位置,那麼您可以設置位置屬性。否則,您可以設置框架,並根據您的錨點計算適當的位置 – 2012-07-13 05:51:02