Dar*_*ren 36 iphone xcode animation ios
我有一个标签显示一个数字,我想将其更改为更高的数字,但我想为它添加一些耀斑.我想让数字增加到更高的数字,并且容易进入曲线,因此它会加速然后变慢.这个答案显示了如何使它增加(第二个答案,而不是接受的答案),但我宁愿为它制作动画,这样我也可以使它稍微增大,然后再缩小,以及缓和曲线. 如何在iphone sdk中运行得分动画
任何想法如何最好地实现这一目标?谢谢
开始/结束编号将由用户输入,我希望它在相同的时间内递增结束编号.因此,如果我已经开始10结束100或开始10结束1000我希望它在5秒钟内计算结束数字.
Tim*_*Tim 68
我实际上只为这个名为UICountingLabel的类创建了一个类:
http://github.com/dataxpress/UICountingLabel
它允许您指定是否要将计数模式设置为线性,缓入,缓出或缓入/缓出.轻松进入/退出开始缓慢计数,加速,然后慢慢结束 - 所有这些都在您指定的任何时间内完成.
它目前不支持根据当前值设置标签的实际字体大小,但如果它是一个需要的功能,我可以添加支持.我的布局中的大多数标签没有很大的增长或缩小的空间,所以我不确定你想如何使用它.但是,它的行为与普通标签完全相同,因此您也可以自行更改字体大小.
mal*_*lex 17
您可以使用GCD将延迟转移到后台线程.
以下是值动画的示例(10秒内从1到100)
float animationPeriod = 10;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
for (int i = 1; i < 101; i ++) {
usleep(animationPeriod/100 * 1000000); // sleep in microseconds
dispatch_async(dispatch_get_main_queue(), ^{
yourLabel.text = [NSString stringWithFormat:@"%d", i];
});
}
});
Run Code Online (Sandbox Code Playgroud)
Tra*_* M. 14
@ malex的答案在swift 3中.
func incrementLabel(to endValue: Int) {
let duration: Double = 2.0 //seconds
DispatchQueue.global().async {
for i in 0 ..< (endValue + 1) {
let sleepTime = UInt32(duration/Double(endValue) * 1000000.0)
usleep(sleepTime)
DispatchQueue.main.async {
self.myLabel.text = "\(i)"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我强烈建议您只需从GitHub下载此类并将其拖入您的项目中,我已经使用它,因为我的代码中的时间似乎不适合更低/更高的计数数字.这个课程很棒,看起来很棒.请参阅此媒体文章以供参考.
您可以使用标志来查看它是否必须上升或下降。使用 while 循环代替 for 循环。通过这种方式,您正在创建一个不断运行的循环,因此您还必须找到一种方法来停止它,例如按下按钮。
| 归档时间: |
|
| 查看次数: |
30600 次 |
| 最近记录: |