2012-05-22 35 views
0

我有一個UIView,我正在嘗試動畫。UIView commitAnimations - 沿着中心的比例尺

[UIView beginAnimations:@"scaleAnimation" context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.5]; 

CGRect f = self.frame; 
f.size.width = f.size.width * 2; 
f.size.height = f.size.height * 2; 
self.frame = f; 

[UIView commitAnimations]; 

動畫工作正常,但是有無論如何我可以使動畫規模沿着中心?
現在,它看起來像是在左上角。

使用CGAffineTransform scale = CGAffineTransformMakeScale(2.0,2.0);沿着中心做動畫,但做一個觸摸事件,當我嘗試檢測UIView的透明區域時,這些點似乎變得混亂起來。

謝謝
三通

回答

2

很簡單。改爲動畫bounds。正如the documentation所說:

更改邊界大小相對於其中心點增大或縮小視圖。

所以,你的代碼會是這樣

[UIView beginAnimations:@"scaleAnimation" context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:1.5]; 

CGRect f = myView.bounds; 
f.size.width = f.size.width * 2; 
f.size.height = f.size.height * 2; 
myView.bounds = f; 

[UIView commitAnimations]; 
+0

嘿大衛,因此使用範圍也有在年底集中了UIView。然而,在動畫過程中,UIView實際上是在最終停在正確的位置之前移動奇怪的。有什麼想法可以造成它?謝謝! – teepusink

+0

對不起,不應該那樣做。當我嘗試上面的代碼時,只創建一個視圖,將其設置爲背景顏色並對其邊界進行動畫處理,但它不會這樣做。我會建議發佈另一個問題以獲得更多關注,並看看是否有其他人知道。儘管你可能不得不展示更多的代碼,因爲這個問題可能在別處。也許顯示在動畫之前如何創建或操縱其他視圖。 –