Counting up/down numbers animation

前端 未结 2 1828
野趣味
野趣味 2021-01-23 18:42

I have an UIPageViewController with a number in the center of each VC in it.

I want that when I swipe from view to view, the number will begin

2条回答
  •  天涯浪人
    2021-01-23 19:47

    Do not overcomplicate with timers and invalidations, etc.

    extension UILabel {    
        func countAnimation(upto: Double) {
            let from: Double = text?.replace(string: ",", replacement: ".").components(separatedBy: CharacterSet.init(charactersIn: "-0123456789.").inverted).first.flatMap { Double($0) } ?? 0.0
            let steps: Int = 20
            let duration = 0.350
            let delay = duration / Double(steps)
            let diff = upto - from
            for i in 0...steps {
                DispatchQueue.main.asyncAfter(deadline: .now() + delay * Double(i)) {
                    self.text = "\(from + diff * (Double(i) / Double(delay)))"
                }
            }
        }
    }
    

提交回复
热议问题