このエントリーをはてなブックマークに追加

2017年2月4日土曜日

Swift3でLTMorphingLabelを使ってみた

こんにちは、onukiです。

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

LTMorphingLabelとは


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

準備


今回はCocoaPodsで追加します。
ただし、現在Swift3ではブランチの指定をしないと
ビルドが通らないみたいなので気をつけて下さい。
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のエフェクトを堪能できると思います。

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

0 件のコメント:

コメントを投稿