2012-05-22 13 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

对不起,不应该那样做。当我尝试上面的代码时,只创建一个视图,将其设置为背景颜色并对其边界进行动画处理,但它不会这样做。我会建议发布另一个问题以获得更多关注,并看看是否有其他人知道。尽管你可能不得不展示更多的代码,因为这个问题可能在别处。也许显示在动画之前如何创建或操纵其他视图。 –