実行環境
Swift | 5.6 |
Xcode | 13.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を学ぶなら下の一冊
リンク