LoginSignup
13
10

More than 5 years have passed since last update.

ネットワークインジケータをAlamofireNetworkActivityIndicatorで表示して幸せになろう

Last updated at Posted at 2016-07-19

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.swiftapplication: 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

注意事項

UIWebViewAFNetworking など別のライブラリを使用している場合は、この手は使えないです。
まぁ仕方ないですよね。

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10