UIView commitAnimations - 沿中心缩放

时间:2012-05-22 22:01:19

标签: objective-c core-animation

我有一个UIView,我正试图制作动画。

[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的透明区域时,这些点似乎搞得一团糟。

谢谢你,
三通

1 个答案:

答案 0 :(得分: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];