カテゴリー: iOS

SwiftでLTMorphingLabelを使ってみた

はじめに

今回はLTMorphingLabelというライブラリが面白そうなので使ってみました。

LTMorphingLabelとは

ラベルのテキスト変更時にエフェクトをつけてくれるライブラリです。
https://github.com/lexrus/LTMorphingLabel
作者のgithubにエフェクトのサンプルがあるのですが、見ているだけで試してみたい欲に駆られますね。

準備

今回はCocoaPodsで追加します。

pod 'LTMorphingLabel', :git => 'https://github.com/lexrus/LTMorphingLabel.git', :branch => 'swift3'

実装

まずはLTMorphingLabelをimportします。

import LTMorphingLabel

StoryboardにUILabelを適当に用意し、ClassにLTMorphingLabelを指定してください。
それをIBOutlet接続します。

@IBOutlet weak var morphingLabel: LTMorphingLabel!

エフェクトの定義を行います。

morphingLabel.morphingEffect = .evaporate

エフェクトの種類、サンプルに関しては作者のgithubを参照してください。

これでmorphingLabelのtextを変更するとエフェクトがかかるようになります。

これだけだとイマイチエフェクトの切り替わりを実感できないので、TimerでmorphingLabelのtextを更新するようにしてみたいと思います。

    @IBOutlet weak var morphingLabel: LTMorphingLabel!
    
    //表示制御用タイマー
    private var timer: Timer?
    //String配列のindex用
    private var index: Int = 0
    //表示するString配列
    private let textList = ["シンプルであることは、", "複雑であることよりも", "難しい"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // エフェクトの定義
        morphingLabel.morphingEffect = .evaporate
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        //タイマーの追加
        timer = Timer.scheduledTimer(timeInterval: 3.0,
                                     target: self,
                                     selector: #selector(update(timer:)), userInfo: nil,
                                     repeats: true)
        timer?.fire()
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        
        timer?.invalidate()
    }
    
    func update(timer: Timer) {
        //ここでtextの更新
        morphingLabel.text = textList[index]
        
        index += 1
        if index >= textList.count {
            index = 0
        }
    }

これでLTMorphingLabelのエフェクトを堪能できると思います。

実装も簡単ですし、見た目も素晴らしいので色々使ってみたいですね。

Hiroki Ono

シェア
執筆者:
Hiroki Ono
タグ: Swift

最近の投稿

Goの抽象構文木でコードを解析する

はじめに Goでアプリケーショ…

3日 前

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

1か月 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前