如何在 swift 中为 UILabel 中的递增数字设置动画
Posted
技术标签:
【中文标题】如何在 swift 中为 UILabel 中的递增数字设置动画【英文标题】:How to animate incrementing number in UILabel in swift 【发布时间】: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)
【问题讨论】:
您能更准确地描述一下它的外观吗?应该例如旧值淡出而新值淡入同一位置?还是应该在新的上交时将旧的转一旁,就像用捡拾器一样?或者你的目标是什么? 可能重复:***.com/questions/33632266/… 【参考方案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)
【讨论】:
以上是关于如何在 swift 中为 UILabel 中的递增数字设置动画的主要内容,如果未能解决你的问题,请参考以下文章
如何大写来自 Swift 子类的 UILabel 的文本属性
如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?
如何比较 Swift 中的字符?我有带有文本和 UITextField 的 UILabel