如何在特定方向上连续移动多个UIButton?

时间:2012-09-20 18:36:52

标签: iphone xcode uibutton core-animation

我的应用程序中有五个UIButton。所有这些UIButton都存储在Array中。如下面的代码显示

  NSMutableArray *Buttons = [NSMutableArray arrayWithObjects:btn1, btn2, btn3,btn4,btn5, nil];

现在我想继续将所有这些UIButton移动到特定方向。我的图像如下所示

enter image description here

我已经在CAkeyframeAnimation中做了一些动画,但是作为一个iOS开始我很难在多个UIButton上使用CAKeyframeAnimation执行这些类型的连续动画。可以帮助我解决这个问题。可以使用任何帮助。

2 个答案:

答案 0 :(得分:1)

如果您试图以一种让他们对用户触摸反应的方式移动这些按钮,直接使用Core Animation可能不是您最好的选择。我在下面的回答是基于这个假设。

当基于核心动画的动画正在运行时,您在屏幕上看到的图层(“表示层” - 请参阅here以获取有关此内容的更多信息)不会在当前位置注册触摸,但仅限于在动画的最终位置,对用户来说是不可见的。因此,移动的bouton将在大多数时间表现,就好像它被禁用一样。虽然可以解决这个问题,但这并不是很方便,也不应该以这种方式使用。

另一个缺点是CAAnimation一旦创建就不是很灵活,例如,如果你需要,停止按钮在当前位置的移动会很麻烦。

相反,您应该手动计算和移动UIButtons帧。要使移动与显示刷新率同步并获得平滑动画,请使用CADisplayLink,这是一个非常易于使用的类,可用于注册每次刷新显示时将回调的方法。在此方法中,您应该根据所需的视图行为更新视图框架。

答案 1 :(得分:1)

我不知道你已经做了什么,但你可以使用UIView动画,然后确保你启用了设置UIViewAnimationOptionAllowUserInteraction选项。

然后,您可以在按钮上放置手势识别器。

要使其动画,只需使用UIView的基于块的动画,只需要完成4个,并重复它们。它很繁琐,但这是一个快速而肮脏的解决方案。