UIView commitAnimations - 沿中心缩放

Posted

技术标签:

【中文标题】UIView commitAnimations - 沿中心缩放【英文标题】:UIView commitAnimations - scale along center 【发布时间】:2012-05-22 22:01:19 【问题描述】:

我有一个 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 缩放 = CGAffineTransformMakeScale(2.0, 2.0);沿着中心做动画,但是做一个触摸事件,当我试图检测 UIView 的透明区域时,这些点似乎都搞砸了。

谢谢你, 三通

【问题讨论】:

【参考方案1】:

这很简单。而是为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];

【讨论】:

嘿大卫,所以使用边界确实使 UIView 最终居中。然而,在动画期间,UIView 实际上是在奇怪地移动,因为它在最终停在正确的位置之前曲折。关于可能导致它的任何想法?谢谢! 对不起,它不应该那样做。当我尝试上面的代码时,只创建一个视图,设置它的背景颜色并为其边界设置动画,但它并没有这样做。我建议发布另一个问题以引起更多关注,看看其他人是否知道。尽管您可能必须显示比这更多的代码,因为问题可能出在其他地方。也许在动画之前展示如何在其他地方创建或操作视图。

以上是关于UIView commitAnimations - 沿中心缩放的主要内容,如果未能解决你的问题,请参考以下文章

UIView动画

iOS学习_动画

iOS动画和特效UIView动画和CoreAnimation

如何使 UIView 从纯色背景色淡化为清除背景色?

iOS进阶_动画的多种实现方式

使用 NavigationController.PushViewController 的 BeginAnimations 和 CommitAnimations