Rav*_*nne 7 nstimer uianimation swift2 xcode7.1 ios9.2
我有一个标签显示一个数字,我想将其更改为更高的数字,但是,我想为它添加一些耀斑.我想通过一个易于进出的曲线将数字增加到更高的数字,以便加速然后减慢速度.请问,如何在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)
}
}
Run Code Online (Sandbox Code Playgroud)
我对斯威夫特并不完全熟悉。但我之前已经使用抛物线实现了这一点。
详细来说,或多或少发生的是基本代数。您有一张图表,其一个轴上的值是 x,时间轴上的值是 y。您希望增加每个动画之间的时间延迟,直到达到稳定状态。
例如:
x=1 延迟= 100ms, x=2 延迟=200ms, x=3 延迟=310ms, x=4 延迟=430ms
请注意,每次增加都比前一次增加。
从数学上来说,要获得这样的斜率,您可以使用以下公式:
y = -x + x^2
并尝试它,直到获得输出,这样对于 x 的每一个增量,您的延迟都对应于一个很好的减速,这在动画上看起来很干净。
值得庆幸的是苹果提供了可以做到这一点的库,我通过快速搜索找到了它:
UIViewAnimationOptions.CurveEaseOut
Run Code Online (Sandbox Code Playgroud)
这个库将为您提供一条快速开始然后减慢的曲线,这是Apple 文档的其余部分
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |