2011-02-13 75 views
1

我正在创建一个应用程序,其中在屏幕上有几个按钮,并且我想让它们在整个屏幕中移动。用户可以点击那些按钮和用户点击的按钮从屏幕上移除。因此我必须停止移动该按钮的定时器。如何在整个屏幕上移动几个按钮

但我主要关心的是如何使所有的泡沫移动,即如何管理它们中的每一个?

我已经使用了NSTimer。

NSTimer* timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(moveTheButton) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

但这可能是有帮助的情况下,如果我只有一个按钮。如果有更多按钮,则很难管理定时器。

此外,按钮的数量是动态的。

请建议一些备用。

我已经经历了几个线程,但没有得到预期的答案。

预先感谢帮助.....

回答

1

我会建议使用CAAnimations移动你的按钮。这将允许您在不使用NSTimers的情况下平滑地设置动画效果,也可以动态创建按钮动画。

创建CAAnimations,然后添加到视图图层。您可以使用CAAnimations动画显示视图的旋转,位置和大小。从视图层添加和删除动画也很容易,非常适合动态内容,而不会让多个NSTimers头疼。

+1

@Brett:感谢您的回复......任何链接或代码示例我可以找到它。 – 2011-02-13 08:57:02

0

UIButton应该如何移动?你的意思是像Brownian motion这样的随机移动每个按钮的东西? :d

嗯,这其实并不重要,我想,但我们认为你有一个广义函数,确定给定其当前位置每个按钮的行为,在这种情况下,你可以使用一个NSArray跟踪所有按钮位置的每个时间,并通过单个NSArray(然后循环其元素)作为NSTimer的选择器调用此函数。

如果你没有一个单一的泛化函数,但每个按钮都有它自己的,你可以为每一种动作子类化UIButton,你必须小心并为每个实现正确动作的类实现一个方法。然后,您可以在NSTimer中调用一个函数,该函数循环访问按钮的引用数组,并调用每个实例的已实现的运动方法(通过多态)

相关问题