前提・実現したいこと
UILabelの数字を添付した動画のようなアニメーションにしたいです。
発生している問題・エラーメッセージ
記事通りの内容で実装してもアニメーションが反応しないです
https://qiita.com/satorun/items/6e27c5a46c0fec8f701d
該当のソースコード
class CountAnimationLabel: UILabel { var startTime: CFTimeInterval! var fromValue: Int! var toValue: Int! var duration: TimeInterval! func animate(from fromValue: Int, to toValue: Int, duration: TimeInterval) { text = "(fromValue)" // 開始時間を保存 self.startTime = CACurrentMediaTime() self.fromValue = fromValue self.toValue = toValue self.duration = duration // CADisplayLinkの生成 let link = CADisplayLink(target: self, selector: #selector(updateValue)) link.add(to: .current, forMode: .commonModes) } // 描画タイミング毎に呼ばれるメソッド @objc func updateValue(link: CADisplayLink) { // 開始からの進捗 0.0 〜 1.0くらい let dt = (link.timestamp - self.startTime) / duration // 終了時に最後の値を入れてCADisplayLinkを破棄 if dt >= 1.0 { text = "(toValue!)" link.invalidate() return } // 最初の値に進捗に応じた値を足して現在の値を計算 let current = Int(Double(toValue - fromValue) * dt) + fromValue text = "(current)" } }
試したこと
1:カスタムラベルファイルを作成
2:該当のlabelにこのクラスを付与
3:Build
アニメーション関連不勉強で全然わかりません。
ヒントなどあると助かります
追記
override func viewDidLoad() { super.viewDidLoad() switch self.number { case 0: subTtitle.text = "サブタイトル" mainTitle.text = "タイトル" countNumber.text = self.Count() // ここでアニメーションしたいです。 ... } private func Count() -> String{ // 起動回数 if let startUpCount = userDefaults.string(forKey: "startUpCount") { return startUpCount } else { return "0" } }
現在
@IBOutlet weak var testLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() self.incrementCountLabel() switch self.number { case 0: subTtitle.text = "サブタイトル" mainTitle.text = "タイトル" countNumber.text = self.Count() // ここでアニメーションしたいです。 ... } private func Count() -> String{ // 起動回数 if let startUpCount = userDefaults.string(forKey: "startUpCount") { return startUpCount } else { return "0" } } private func incrementCountLabel() { label = CountAnimationLabel() label.animate(from: 0, to: 100, duration: 0.7) view.addSubview(label) self.testLabel = label }
参考
・UILabelでインクリメントする数値をアニメーション化する方法(完全なサンプル)
https://www.webdevqa.jp.net/ja/iphone/uilabel%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E6%95%B0%E5%80%A4%E3%82%92%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%8C%96%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/942383767/
・iOSで数字の増減をアニメーションさせる
https://qiita.com/satorun/items/6e27c5a46c0fec8f701d
回答1件
あなたの回答
tips
プレビュー