【Swift4】NVActivityIndicatorView(いい感じのインジケータ)をコードで追加する


はじめに

「いい感じのインジケータにしといて」と突然上司に言われた時に、
超初心者でもスムーズにいい感じのインジケータを使えたら便利だなという思いで本記事を書きました。
尚、私自身知識激浅なのでご留意ください。

環境

・X-code9.4.1
・Swift4.1

手順

NVActivityIndicatorViewライブラリを導入

ターミナルを開いてcdコマンドで作成済みのX-codeのプロジェクト「Test(仮)」のある場所(青色のX-codeファイルのある階層)まで移動。
ex)cd Test

pod initしてpodfileを作成。

それ以降のNVActivityIndicatorViewライブラリ導入の手順はこちらの記事にも載っています。

↓も参考にすると◎
iOSライブラリ管理ツール「CocoaPods」の使用方法

pod install してNVActivityIndicatorViewが使えるようになったら、
TestViewController(インジケータを表示したいViewController)を作成します。

コードでNVActivityIndicatorViewを追加する

実際に書いたコードは以下です。
ボタンを押したときにインジケータが表示されたり止まったりします。

TestViewController.swift
import UIKit
import NVActivityIndicatorView

final class TestViewController: UIViewController {

    private var activityIndicatorView: NVActivityIndicatorView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // インジケータの追加
        activityIndicatorView = NVActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 60, height: 60), type: NVActivityIndicatorType.lineSpinFadeLoader, color: UIColor.red, padding: 0)
        activityIndicatorView.center = self.view.center // 位置を中心に設定
        view.addSubview(activityIndicatorView)
    }

    @IBAction func pushStartButton(_ sender: UIButton) {
        start()
    }

    @IBAction func pushStopButton(_ sender: UIButton) {
        stop()
    }

    /// インジケータ開始(startメソッドは書かなくてもOKw)
    private func start() {
        activityIndicatorView.startAnimating()
    }

    /// インジケータ 停止(stopメソッドは書かなくてもOKw)
    private func stop() {
        activityIndicatorView.stopAnimating()
    }
}

NVActivityIndicatorTypeでは、いろいろなインジケータの種類を指定できます。

参考:【Swift】シンプルでオシャレなNVActivityIndicatorView使ってみた【例のくるくる】

色合い諸々のダサさは置いておいて、インジケータそのものは良さそうな感じです。(動画貼れなかった)




補足

podごにょごにょしてる段階でエラーになってしまったとき

もし、import NVActivityIndicatorViewした段階で、

こんなエラーが出てしまった場合にはprogectをcleanするか、
Link Binay With LibrariesにNVActivityIndicatorViewのライブラリが追加されているか確認。
されていなかったら、+ボタンを押して追加。



それでもダメだったら強めに(optionボタン押しながら)Cleanしましょう・・・。

参考

https://developer.apple.com/documentation/uikit/uiactivityindicatorview
https://qiita.com/ShirataHikaru/items/7872a9692a78129d07f4