【问题标题】:How to animate incrementing number in UILabel in swift如何在 swift 中为 UILabel 中的递增数字设置动画
【发布时间】:2016-07-22 01:54:54
【问题描述】:

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

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

【问题讨论】:

  • 您能更准确地描述一下它的外观吗?应该例如旧值淡出而新值淡入同一位置?还是应该在新的上交时将旧的转一旁,就像用捡拾器一样?或者你的目标是什么?

标签: swift2 nstimer uianimation xcode7.1 ios9.2


【解决方案1】:

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

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

例如:

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

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

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

y = -x + x^2

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

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

 UIViewAnimationOptions.CurveEaseOut

这个库会给你一个快速启动然后减速的曲线,这是Apple Documentation的其余部分

【讨论】:

    【解决方案2】:

    请检查:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多