UIRefreshControlの代わりになるSwfitRefresherを作った!

UIRefreshControlの代わりになるSwfitRefresherを作った!SwiftRefresherというライブラリを作りました! UIRefreshControlのように引っ張って更新ができるライブラリです。このライブラリは一つの大きな問題を解決し、一つのデベロッパーの自由を拡張する特徴を備えています!

Refresher

問題の解決: UIViewControllerの中のUITableViewにおいても綺麗に動く

UIRefreshControlはUITableViewControllerで使うと、意図した通り綺麗に動きます。しかし、UITableViewControllerをそのまま使うことは少なく、実際は、UIViewControllerの上にUITableViewを置いて使うことになります。UIRefreshControlはUITableViewControllerで使うことが想定されており、UITableView上で使うことはできるけれども、たくさん引っ張らないとRefreshのイベントが発動しなかったり回転しないActivityIndicatorが最初から見えてしまっていたり、不自然な挙動になります。

SwiftRefresherはこの問題を解決します。UITableView上に単独でおいても意図したように綺麗に動きます。指定した高さ(デフォルトでは44px)を超えた時に指を離すとRefreshのイベントが走ります。

自由の拡張: Refresherのビュー単位でのカスタマイズができる

SwiftRefresherでは、Refresherのビュー単位でのカスタマイズが出来ます。SwfitRefresherEventReceivableプロトコルに準拠したUIViewのサブクラスをRefresherに渡すことで、プル状態、ローディング状態などに応じて見た目をカスタマイズできます。SwfitRefresherEventReceivableに準拠するとdidReceiveEventのメソッドを書く必要があります。これはRefresherのデリゲートになっています。下記のコード例はライブラリのデフォルトで使っているビューでの実装です。

public func didReceiveEvent(event: SwiftRefresherEvent) {
    switch event {
    case .Pull:
        pullingImageView.hidden = false
    case .StartRefreshing:
        pullingImageView.hidden = true
        activityIndicatorView.startAnimating()
    case .EndRefreshing:
        activityIndicatorView.stopAnimating()
    case .RecoveredToInitialState:
        break
    }
}

このようにイベントに応じて自身のビューの見た目を変えることにより自由にRefresherの見た目をカスタマイズすることができます。

SwiftRefresher0.9.0

SwiftRefresherは現在0.9.0です。まだ出来たばかりですが、Refresherの問題点を解消し、さらに自由な拡張ができるようになっています。是非、使ってみてください。

Pocket
LINEで送る

You may also like...