【问题标题】:How do I make a picker appear to spin around multiple times?如何使选择器看起来旋转多次?
【发布时间】:2011-10-03 01:49:57
【问题描述】:

我试图让选择器在降落到特定行之前看起来会旋转多次。我尝试过使用 for 和 do 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];

我执行上述操作大约三到四次,每次选择器似乎只重新加载一次并进入最终选定的行。有什么特别的事情我必须做的,或者有没有可能让选择器看起来一圈又一圈地旋转?如果我什至可以让它在登陆之前在行选择之​​间随机跳转,我会很好的。 谢谢!!

【问题讨论】:

    标签: iphone objective-c xcode4


    【解决方案1】:

    不要让 UI 线程休眠。直到你退出这个方法,在你所有的睡眠之后,动画才会开始。因此,从方法返回第一个请求选择器进行动画处理。在前一个选择器动画完成后,在计时器回调中执行后续选择器动画请求。冲洗并根据需要重复。

    其他应用这样做的方式是根本不使用真正的选择器,而是在选择器控件上叠加一个动画图像序列,这恰好看起来像一个旋转的选择器。然后删除假动画以在下面显示一个外观相同但真实的选择器。您自己的动画卡通的优势在于,您可以让假拾取器以真正拾取器无法做到的方式旋转。

    【讨论】:

    • 完美!谢谢!我认为使用动画图像序列也是一个很酷的主意。可能会切换到那个,但你的建议奏效了。
    【解决方案2】:

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

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

    【讨论】:

    • 我认为这就是我正在做的事情:int newValue = random() % [self.inputNames count]; [payPicker selectRow:newValue inComponent:0 animated:YES];
    • 我同意。您是否尝试过我在答案的最后一行中写的内容?
    • 您好 Akshay,不,我没有尝试过,但 hotpaw2 提供了答案。无论如何,最好使用动画图像序列。感谢您的帮助。我很感激我能得到的一切。 :)
    猜你喜欢
    • 2017-08-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多