UILabelを1文字ずつタイピングしているような感じでアニメーションする方法を紹介します。
CLTypingLabelを使うと、とても簡単に実装することができます。
CLTypingLabelを導入する
GitHub – cl7/CLTypingLabel: iOS UILabel with character by character typing /typewriter animation
CLTypingLabel
は1ファイルのみで構成されています。CocoaPodを使っても良いですが、CLTypingLabel.swift
をそのままコピーしてプロジェクトに組み込んでも良いです。そのほうが手軽かと思います。
UILabelアニメーションの各種設定
CLTypingLabel
はUILabel
を継承したクラスなので、UILabel
と同じように使用することが可能です。
storyboard
でUILabel
を設置したり、もしくはコードで実装して、CLTypingLabel
インスタンスを作成します。
あとは、CLTypingLabel
にUILabel
と同じようにtext
を設定するだけでアニメーションされます。
UILabelアニメーションのスピード
アニメーションのスピードも簡単に設定することが可能です。
label.charInterval = 0.03
デフォルトは0.1
に設定されているので、1秒で10文字と考えて良さそうです。それよりも早くアニメーションしたければ、上記のようにcharInterval
を0.1
より小さい数値に設定します。
UILabelアニメーションのstart・pause・continue
アニメーションの開始は、text
を設定したタイミングとなりますが、pause
やcontinue
も可能です。
それぞれ、label.pauseTyping()
、label.continueTyping()
と関数を呼ぶだけです。
AttributedTextにも対応
CLTypingLabel
はattributedText
にも対応しています。
label.attributedText = NSAttributedString(string: text)
非常にお手軽なので、試してみてください。
サンプルコード
import UIKit
class ViewController: UIViewController {
private lazy var animationLabel: CLTypingLabel = {
let label = CLTypingLabel()
label.font = .systemFont(ofSize: 14, weight: .medium)
label.charInterval = 0.03
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
// labelをviewにaddする
view.addSubview(animationLabel)
// labelにAutoLayoutをコードで設定(viewの真ん中に固定)
[animationLabel.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
animationLabel.centerXAnchor.constraint(equalTo: self.view.centerXAnchor)]
.forEach { $0.isActive = true }
// labelにtextを設定
animationLabel.text = "Typing Animation"
}
}
GitHub – cl7/CLTypingLabel: iOS UILabel with character by character typing /typewriter animation
ココナラというサービスをご存知ですか?
ココナラは、プログラミングやウェブ制作、デザインなどの専門知識を持つ人たちが、自分のスキルを活かしてサービスを提供する場所です。
初学者の方でも気軽に相談できるため、自分のスキルアップにも最適です。また、自分自身もココナラでサービスを提供することができ、収入を得ることができます。
ぜひ、ココナラに会員登録して、新しい世界を体験してみましょう!