我有一个点钞机,它会随着时间的推移而增加,我想制作动画,我正在使用下面的扩展来运行动画,但问题是当我只希望改变的数字是动画。
我想我应该将数字分开并单独为每个单独的数字制作动画,问题是我不知道如何分解数字并获得特定数字。
有没有一种方法可以分解数字并获取单个数字,或者有更好的方法在单个数字上运行动画?
func pushTransition(duration:CFTimeInterval) {
let animation:CATransition = CATransition()
animation.timingFunction = CAMediaTimingFunction(name:
kCAMediaTimingFunctionEaseInEaseOut)
animation.type = kCATransitionPush
animation.subtype = kCATransitionFromTop
animation.duration = duration
self.layer.add(animation, forKey: kCATransitionPush)
}
if let aLabel = self.money{
aLabel.pushTransition(duration: 0.2)
aLabel.text = "$\(strRoundDollars)"
money.sizeToFit()
}
最佳答案
首先,您希望使用 NumberFormatter
而不是简单的字符串插值,以确保您的区域设置/货币始终具有正确的小数位数和货币符号等。然后您需要做的就是将字符串的 .characters
属性映射回字符串数组:
let dollars = 123.4
let n = NumberFormatter()
n.numberStyle = .currency
n.locale = Locale.autoupdatingCurrent // or whatever locale you want
if let text = n.string(from: NSNumber(value: dollars)) {
text // "$123.40"
let charactersAsStrings = text.characters.map({String($0)})
charactersAsStrings // ["$", "1", "2", "3", ".", "4", "0"]
}
非常感谢@Sulthan 指出我使用 String(format: "$%0.2f", dollars)
的第一个答案是劣质 :)
关于ios - 获取特定的小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248677/