2010-03-03 95 views
2

我正在尝试使UIView动起来,以便在点击按钮时可以变大,并通过再次点击按钮缩小至原始大小。动画UIView问题(将展开的动画与缩小的动画匹配)

我这样做是通过调整帧的大小和来源并运行下面的代码。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
self.theView.frame = frame; 
[UIView commitAnimations]; 

当将动画设置为更大的尺寸时,动画应该是这样。但是,当动画到原始大小(较小)时,视图立即重新调整大小,然后动画到其指定位置。

我需要的是对较小的框架调整大小也是动画。

我已经尝试调整autoresizingMask,但那并没有改变任何东西。

希望有人能帮忙。

谢谢。

+0

Michieal,我面临着类似的问题。当我尝试将视图更改为更大尺寸的动画时,它的原点和宽度/高度都会发生变化,视图会立即重新调整大小,然后动画到其新位置。它与你所引用的相似,但是当我试图炸开视图时会发生。代码与您上面发布的代码相同。什么可能是这个问题的原因?你是如何解决它的?对于后人和未来的参考文献,请提供您的答案,以便其他人可能受益。 – 2010-07-08 07:38:44

回答

0

我的工作解决此问题。 它在我脑海里一直在困扰着我,所以就在本周我想,也许通过使用中心属性和大小而不是原点,它会产生变化。

所以我决定测试一下。你猜怎么了。使用sdk 4.x时不会发生这个问题

感谢所有的人试图帮助我。

0

试试这个

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationRepeatAutoreverses:YES]; 
self.theView.frame = frame; 
[UIView commitAnimations]; 

回应置评;

如果你想控制动画反转,有一个像BOOL isbig这样的标志,并将其设置为在应用程序启动到NO,然后切换到每个按钮水龙头,然后检查它是否为YES或NO,并根据结果调用一个方法。如果否,请致电您的代码,如果不再次调用代码,但是这次将帧设置为原始大小。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
self.theView.frame = originalFrame; 
[UIView commitAnimations]; 
+0

这会自动反转动画。我正在寻找的是将缩小的动画与缩小的动画相匹配。现在缩小的动画会立即调整为较小的大小,而不是将其设置为动画。 – McDJ 2010-03-03 14:08:43

+0

查看更新,如果我理解正确,这应该没问题。 – EEE 2010-03-03 14:34:11

+0

感谢您的信息。 但这就是我所做的。基于我的旗帜,我用bigFrame或smallFrame调用动画。 麻烦的是,当大的时候,动画是完美的。当变小时,UIView的帧尺寸会立即更新,然后较小的帧被移动到新的坐标。我期待的就像动画到大,在那里帧大小和帧位置将逐步更新。这没有发生。 现在我删除了动画。我只是不明白为什么颠倒的动画不完全一样(但是相反)。 – McDJ 2010-03-03 15:28:53

0

我可以通过在其他线程中发现的建议来解决问题,但它有其自身的局限性。我已经张贴在该解决方案建议在同一个线程的代码:

UIView scaling during animation