0

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

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

现在我想连续移动所有这些 UIButtons 在特定方向。如下图所示

在此处输入图像描述

我已经在 CAkeyframeAnimation 中做了一些动画,但是作为一个 iOS 初学者,我很难使用 CAKeyframeAnimation 在多个 UIButtons 上执行这些类型的连续动画。有人可以帮我解决这个问题。任何帮助都会得到帮助。

4

2 回答 2

1

如果你试图移动这些按钮以使它们对用户触摸做出反应,那么直接使用 Core Animation 可能不是你最好的选择。我下面的回答是基于这个假设。

当基于 Core Animation 的动画运行时,您看到在屏幕上移动的层(“表示层”——有关此的更多信息,请参见此处)不会在其当前位置注册触摸,而只会在动画的最终位置注册,这对用户是不可见的。因此,移动按钮在大多数情况下都会表现得好像它被禁用一样。虽然可以破解这个问题,但它不是很方便,也不打算以这种方式使用。

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

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

于 2012-09-21T19:06:22.700 回答
1

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

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

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

于 2012-09-24T11:21:48.250 回答