如何使拾取器看起来多次旋转?

时间:2011-10-03 01:49:58

标签: iphone objective-c xcode4

我试图让一个选择器在登陆特定行之前多次旋转。我尝试过使用for和while循环。我甚至尝试连续调用多个方法,但每次,选择器只显示重新加载一次,即使我告诉它重新加载多次,然后最终登陆到这样的选定行:

int newValue = random() % [self.inputNames count];
[payPicker selectRow:newValue inComponent:0 animated:YES];
[payPicker reloadComponent:0];
NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 2.0 ];
[NSThread sleepUntilDate:future];

newValue = random() % [self.inputNames count];
[payPicker selectRow:newValue inComponent:0 animated:YES];
[payPicker reloadComponent:0];

[NSThread sleepUntilDate:future];

我执行上述操作大约三到四次,每次选择器只显示重新加载一次并进入最后选定的行。我有什么特别的事情要做,或者是否有可能让拣货员看起来像是在四处转转?如果我甚至可以让它在登陆之前在行选择之​​间随机跳转,我就可以了。 谢谢!

2 个答案:

答案 0 :(得分:1)

不要睡眠UI线程。在您完成所有睡眠之后,在退出此方法之前,不会启动任何动画。因此,从具有选择器的第一个请求的方法返回到动画。在上一个选择器动画完成后,在计时器回调中执行后续选取器动画请求。必要时冲洗并重复。

其他应用程序执行此操作的方式是根本不使用真正的选择器,而是将选取器控件与动画图像序列重叠,这恰好看起来像拾取器旋转。然后删除假动画,以显示下面相同但看起来真实的选择器。你自己的动画片的优势在于你可以用真正的选择器无法实现的假捡拾器旋转。

答案 1 :(得分:0)

也许您可以在选择实际行之前尝试选择随机行。例如,如果要选择第0行,请按以下顺序选择行 - 9,2,15,0。如果选择器视图已经位于它应该去的行上,我认为它不会旋转。< / p>

此外,您应该在pickerView:didSelectRow:inComponent:方法点击后每次都选择行。