Alamofire
を使用した開発を行った時に通信処理を記述するところにすべて以下の様な記述するのが面倒くさい!という方におすすめです。
hoge.swift
// ネットワークインジケータを表示
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
// ネットワークインジケータを非表示
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
セットアップ
Podfile
platform :ios, '8.0'
use_frameworks!
pod 'AlamofireNetworkActivityIndicator', '~> 1.0'
入力が終わったら以下を実行!!
$ pod install #(または, pod update)
ライブラリのお仕事が終わり次第、 AppDelegate.swift
の application: didFinishLaunchingWithOptions
に追記する。
AppDelegate.swift
import AlamofireNetworkActivityIndicator
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// 以下を追記
NetworkActivityIndicatorManager.sharedManager.isEnabled = true
return true
}
以上でセットアップは完了!!
オプション
インジケータを表示させる時間の調整
デフォルトでは、1.0秒後にインジケータが表示されているようです。
また、レスポンスタイムが短すぎるときには表示されないという衝撃的な事実があるので以下を AppDelegate.swift
の先ほどの下部に追記するといい感じになりました。
AppDelegate.swift
NetworkActivityIndicatorManager.sharedManager.startDelay = 0.0
遅くさせる場合は数を増やすと大丈夫です。
インジケータの非表示にさせる時間の調整
デフォルトでは、レスポンス終了後から0.2秒後にネットワークインジケータが非表示になります。
私が実際に AlamofireNetworkActivityIndicator
を実装してみた感じ「0.2秒で全然違和感ない!!」って言う感じだったのでこれで大丈夫かと思います。
AppDelegate.swift
NetworkActivityIndicatorManager.sharedManager.completionDelay = 0.2
注意事項
UIWebView
や AFNetworking
など別のライブラリを使用している場合は、この手は使えないです。
まぁ仕方ないですよね。