7

我有一个显示数字的标签,我想将其更改为更高的数字,但是,我想为它添加一些耀斑。我希望通过缓入曲线将数字增加到更高的数字,这样它就会加速然后减速。请,如何快速实现这一点,这是我的代码。谢谢。

 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)
    }
}
4

2 回答 2

2

我对swift并不完全熟悉。但我之前使用抛物线实现了这一点。

详细地说,或多或少发生的是基本代数。您有一个图表,其中一个轴上的值为 x,时间轴上的值为 y。您希望每个动画之间的时间延迟增加,直到达到平稳状态。

例如:

x=1 延迟= 100ms, x=2 延迟=200ms, x=3 延迟=310ms, x=4 延迟=430ms

请注意,每次增加都比前一次增加。

从数学上讲,要获得这样的斜率,您可以坐在公式前面,例如:

y = -x + x^2

在此处输入图像描述

并玩弄它,直到你得到一个输出,这样对于 x 的每一个增量,你的延迟对应于一个很好的减速,在动画上看起来很干净。

谢天谢地,Apple 作为包含的库可以做到这一点,我通过快速搜索找到了它:

 UIViewAnimationOptions.CurveEaseOut

这个库会给你一个快速启动然后减速的曲线,这里是苹果文档的其余部分

于 2016-11-21T01:01:59.173 回答
1

请检查:

func countAnimation(timer: NSTimer)
{
    UIView.transitionWithView(label,
                          duration: 1.0,
                          options: [.CurveEaseInOut],
                          animations: { () -> Void in
                          // Write your code here
    }, completion: nil)

}
于 2016-11-21T05:50:36.330 回答