【Swift】PKHUDで通信中のインジケータを実装する方法

PKHUDで通信中のインジケータを実装してみる

実行環境

Swift5.6
Xcode13.3

完成物

下のように、
インジケータといわれる「クルクル回るやつ」を通信を行っている時間だけ表示するアプリです。
ローカルで試してみたい方は、こちらのGitHubからどうぞ。

実装

podでPKHUDのインストール

まずはpodのインストール。
新しく作成したXcodeファイルと同じパスに移動し、
ターミナルで下記コマンドを実行します。

pod init

すると出来上がったpodfileに「pod ‘PKHUD’」部分を追記します。

# Uncomment the next line to define a global platform for your project
# platform :ios, '14.0'

target 'MiniApp41-FSCalender01' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MiniApp41-FSCalender01
    pod 'PKHUD'

end

残すは下記を実行して、
「xcworkspace」を開いていきましょう。

pod install

XCode

StoryBoardからWebViewを接続し、下記をコーディングすればOKです。
ポイントは2点あって、
1つ目は、「HUD.show(.progress, onView: view)」でインジケータの表示、「HUD.hide(animated: true)」で非表示にすること。
2つ目は、「WKNavigationDelegate」プロトコルを準拠させ、読み込み終了(通信終了)の通知を受け取ること。(「WKNavigationDelegate」プロトコル関しては、こちらで詳しく紹介しています。)
このあたりが理解できれば大丈夫だと思います。

import UIKit
import WebKit
import PKHUD

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet private var webView: WKWebView!
    private let urlString = "https://apple.com"

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.navigationDelegate = self
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        HUD.dimsBackground = true
        HUD.show(.progress, onView: view)

        if let url = URL(string: urlString) {
            self.webView.load(URLRequest(url: url))
        } else {
            print("URLが取得できませんでした。")
        }
    }

    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        print("読み込み開始")
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("読み込み完了")
        HUD.hide(animated: true)
    }

}

ということで、本記事はPKHUDで通信中のインジケータを実装する方法を自分のメモ程度にまとめました。
本記事を書いている僕自身は、まだSwift初学者のためコードに至らない点が多いと思います。参考程度にご活用下さい。
アドバイスやコードの改善などあれば本記事の最後の部分からコメントしてくださいね。
最後まで読んでいただきありがとうございました!

おすすめSwift書籍

Swiftを学ぶなら、間違いのない2冊はこちら

Xcodeを学ぶなら下の一冊



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です