Help us understand the problem. What is going on with this article?

UIActivityIndicatorViewとメインスレッド・サブスレッドについて

More than 1 year has passed since last update.

職場でIndicatorとメインスレッド・サブスレッドについて使用する機会があるので備忘録としてここに記す。

インジゲーターについて

主に重い処理や通信などを行う際に使用する。
メインスレッドやサブスレを意識する際に同時並行して使用する認識だが合ってるかな?

グローバルで変数を宣言

let activityIndicatorView = UIActivityIndicatorView()

viewdidloadでUI系を調整

override func viewDidLoad() {
        super.viewDidLoad()
        // インジゲーターを中心に位置
        activityIndicatorView.center = view.center
        // インジゲーターのスタイル
        activityIndicatorView.style = UIActivityIndicatorView.Style.medium
        // インジゲーターのカラー
        activityIndicatorView.color = .red
        // インジゲーターをviewに追加
        view.addSubview(activityIndicatorView)
    }

ボタン押下時にインジゲーターのを回すようロジックを組む

@IBAction func action(_ sender: Any) {
        // アニメーションをスタート
        activityIndicatorView.startAnimating()
        // 重たい処理を実行 いわゆるサブスレッド(非同期処理などを実行)
        // サブスレッドで何か重い処理をして終わったらメインスレッドに戻す
        DispatchQueue.global().async {
            /* 処理を一定時間止める。同期処理で、一定時間処理を待たせたり、
             数秒間何かを表示してから消すとかそういう時に使える。 */
            Thread.sleep(forTimeInterval: 5)
            DispatchQueue.main.async {
                // メインスレッドはUIの処理など
                // アニメーションをストップ
                self.activityIndicatorView.stopAnimating()
            }
        }
    }

締め

他にインジゲーターとメインスレッド/サブスレッドで有用な使用方法があれば教えてください!

mumei1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away