如何在swift中动画UILabel中的递增数字
我有一个显示数字的标签,我想将其更改为更高的数字,但是,我想为其添加一些亮点。 我想通过缓出曲线将数字增加到更高的数字,以便加速然后减慢速度。 请,如何在swift中实现这个,这里是我的代码。 谢谢。
let newValue : Double = 1000
let oldValue : Double = 500
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("countAnimation:"), userInfo: ["oldValue":oldValue, "newValue": newValue], repeats: true)
func countAnimation(timer: NSTimer)
{
let dict = timer.userInfo as? [String:AnyObject]
var OldTotalValue : Double = (dict!["oldValue"] as? Double)!
let newTotalValue : Double = (dict!["newValue"] as? Double)!
OldTotalValue = OldTotalValue + 10
if newTotalValue < OldTotalValue
{
timer.invalidate()
}
else
{
mylabel.text = String(OldTotalValue)
}
}
我对斯威夫特并不完全熟悉。 但我以前使用抛物线来实现这一点。
详细的或多或少的是基本代数。 您有一个图表,其中一个轴上的值为x,然后是时间轴上的y。 您希望每个动画之间的时间延迟增加,直到达到高原。
例如:
x = 1延迟= 100ms,x = 2延迟= 200ms,x = 3延迟= 310ms,x = 4延迟= 430ms
注意每一次增加都比以前多。
在数学上得到这样一个斜率,你可以坐在公式的前面,例如:
y = -x + x ^ 2
并玩弄它,直到你得到一个输出,以便每增加一个x,你的延迟就相当于一个很好的减速,看起来干净的动画。
谢天谢地苹果包括图书馆将这样做,我发现它与一个快速搜索:
UIViewAnimationOptions.CurveEaseOut
这个库会给你一条开始很快然后变慢的曲线,下面是苹果文档的其余部分
请检查这一点:
func countAnimation(timer: NSTimer)
{
UIView.transitionWithView(label,
duration: 1.0,
options: [.CurveEaseInOut],
animations: { () -> Void in
// Write your code here
}, completion: nil)
}
链接地址: http://www.djcxy.com/p/91149.html
上一篇: How to animate incrementing number in UILabel in swift
下一篇: Inserting in vector with reference to data of the same vector