swift2 - 如何在 swift 中为 UILabel 中的递增数字设置动画

标签 swift2 nstimer uianimation xcode7.1 ios9.2

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

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

最佳答案

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

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

例如:

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

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

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

y = -x + x^2

enter image description here

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

值得庆幸的是,Apple 作为包含的库可以做到这一点,我通过快速搜索找到了它:

 UIViewAnimationOptions.CurveEaseOut

该库将为您提供一条快速启动然后减速的曲线,这是 Apple Documentation 的其余部分

关于swift2 - 如何在 swift 中为 UILabel 中的递增数字设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370213/

相关文章:

ios - 保存并裁剪后如何将前置摄像头录制旋转90度?

ios - NSTimer 与 CACurrentMediaTime()

ios - 像雷达 Objective-C 那样的动画

iphone - 在摆动图像上显示删除按钮并删除该特定图像

ios - 如何在 Collection View 中给 UILabel 一个闪烁的效果

swift - Swift 中的公共(public)扩展 : Float vs Float. 类型

ios - 如何从以编程方式创建的 UITableView 继续?

ios - 无法在 Swift 中遵循 obj-c 协议(protocol)

ios - iPad : need accurate alternative to NSTimer for making donkey kong style game

objective-c - 递增 NSTimer