【Swift】MRProgress の利用方法について1

##概要
AvtivityIndicatorViewにプログレスバーの機能をつけたコントロールが欲しくてライブラリを探してました。
結果MRProgressにたどり着いたんですが、使い方がググっても全然わかりませんでした。
ライブラリもObjective-Cで書かれてるので読むのが難しい・・・

とりあえず試行錯誤しながら使い方を検証してます。
わかる方がいれば教えて下さい！
もしくは記事を投稿して下さい（ずうずうしい）

##MRProgressについて
iOSのライブラリでSwiftでも利用可能です。
[GitHub MRProgress](https://github.com/mrackwitz/MRProgress)
[MRProgress パワフルなiOS7プログレスビューのコレクション](http://www.iosjp.com/dev/archives/923)


##導入方法
swift対応バージョンのCocoaPodsを利用していれば、利用したいソースで

```swift:filename.swift
import MRProgress
```

[taketin氏：Swift 対応版 CocoaPods を使う](http://qiita.com/taketin/items/8264aeebc5a626c6d48f)


##基本用法
表示や停止をclass func で定義していて、表示と非表示はこんな感じ。
modeとtitleを指定しないoverloadもあります。

**
注viewDidLiad()内に記述したらアニメーションが動きませんでした。
**

```swift:filename.swift
//処理開始時
MRProgressOverlayView.showOverlayAddedTo(self.view,title:"",mode:MRProgressOverlayViewMode.DeterminateCircular, animated: true);

//もしくは以下で
MRProgressOverlayView.showOverlayAddedTo(self.view, animated: true);

//処理終了時のイベントハンドラ等に記述
MRProgressOverlayView.dismissOverlayForView(self.view, animated: true)
```

定義はこんな感じになってました。
設定できるmodeはMRProgressOverlayViewMode:Enumにある分です。

```swift:MRProgressOverlayView

import UIKit

//
//  MRProgressOverlayView.h
//  MRProgress
//
//  Created by Marius Rackwitz on 09.10.13.
//  Copyright (c) 2013 Marius Rackwitz. All rights reserved.
//

/** (MRProgressOverlayViewMode) */
enum MRProgressOverlayViewMode : UInt {
    case Indeterminate
    case DeterminateCircular
    case DeterminateHorizontalBar
    case IndeterminateSmall
    case IndeterminateSmallDefault
    case Checkmark
    case Cross
    case Custom
}

/**
 Progress HUD to be shown over a whole view controller's view or window.
 Similar look to UIAlertView.
 */
class MRProgressOverlayView : UIView {

    class func showOverlayAddedTo(view: UIView!, animated: Bool) -> Self!
    class func showOverlayAddedTo(view: UIView!, title: String!, mode: MRProgressOverlayViewMode, animated: Bool) -> Self!
    class func dismissOverlayForView(view: UIView!, animated: Bool) -> Bool
    class func dismissAllOverlaysForView(view: UIView!, animated: Bool) -> UInt
    class func overlayForView(view: UIView!) -> Self!
    class func allOverlaysForView(view: UIView!) -> [AnyObject]!
    func createBlurView() -> UIView!
    var mode: MRProgressOverlayViewMode
    var progress: Float
    var titleLabelText: String!
    var titleLabelAttributedText: NSAttributedString!
    var titleLabel: UILabel! { get }
    var modeView: UIView!
    func setTintColor(tintColor: UIColor!)
    func setProgress(progress: Float, animated: Bool)
    func show(animated: Bool)
    func hide(animated: Bool)
    func dismiss(animated: Bool)
}

```

ソースは確認したところこんな感じ。

```objc:MRProgressOverlayView.m
+ (instancetype)showOverlayAddedTo:(UIView *)view animated:(BOOL)animated {
   MRProgressOverlayView *overlayView = [self new];
   [view addSubview:overlayView];
   [overlayView show:animated];
   return overlayView;
}

+ (instancetype)showOverlayAddedTo:(UIView *)view title:(NSString *)title mode:(MRProgressOverlayViewMode)mode animated:(BOOL)animated {
    MRProgressOverlayView *overlayView = [self new];
    overlayView.mode = mode;
    overlayView.titleLabelText = title;
    [view addSubview:overlayView];
    [overlayView show:animated];
    return overlayView;
}

+ (BOOL)dismissOverlayForView:(UIView *)view animated:(BOOL)animated {
   MRProgressOverlayView *overlayView = [self overlayForView:view];
   if (overlayView) {
       [overlayView dismiss:animated];
       return YES;
   }
   return NO;
}
```

##とりあえず
長くなりそうなのでこれくらいで記事を終わります。
そろそろ別の作業もしたいし、、、、
明日にでもカスタマイズの方法をまとめます。
正直わかりづらいので自分で使いやすいように変更します。

とはいってもObjective-Cのソースはいじりたくないので、MRProgressのラッパークラスを作成する感じ。
もしくはextensionしたほうがよければそれもあり。

[次⇒【Swift】MRProgress の利用方法について2](http://qiita.com/tdaiku/items/ed7e3ae41f1caeabc947)