概要
iOSライブラリのMRProgress利用方法についてです。
利用方法
UIProgressView(文字とプログレスバーの基本表示)を表示する例です。
//
var mrprogress:MRProgressOverlayView!
//UIProgressViewの表示例
@IBAction func btn_StartClick(sender: AnyObject) {
mrprogress = MRProgressOverlayView()
mrprogress.titleLabelText = "Loading!"
mrprogress.mode = MRProgressOverlayViewMode.DeterminateHorizontalBar
var progress = UIProgressView()
progress.progressViewStyle = UIProgressViewStyle.Default
progress.progress = 0.5
progress.trackTintColor = UIColor.grayColor()
progress.progressTintColor = UIColor.blueColor()
mrprogress.modeView = progress
view.addSubview(mrprogress)
mrprogress.show(true)
}
//progressバーを進める例
//StoryboardにTapGestureRecognizerを追加してタップアクション時に
//progressバーを10%進めてます。100%になったらHide
@IBAction func tap_Click(sender: AnyObject) {
if(mrprogress == nil){return}
let obj = mrprogress.modeView as UIProgressView
if(obj.progress >= 1.0){
mrprogress.hide(true)
}else{
mrprogress.setProgress(obj.progress + 0.1,animated: true)
}
}
プログレスバー作成
MRProgressOverlayViewのmodeViewにUIProgressViewのインスタンスをセットしてます。
このUIProgressView以外にも設定できるmodeViewがあり、
それぞれで設定できる値が違うのではないか?と思っています。
プログレスバーを進める
とりあえずタップでプログレスバーを進めてテストしてます。
MRProgressOverViewオブジェクトのprogressではなくて
modeViewのprogressに値が入っているため、
いちいちキャストしなくては現在の値が取得できなかったです。
所感
そもそもMRProgressOverlayViewにprogressがあるのに
modeViewにもprogressを持つのはなんか気持ちが悪い。
おそらくmodeViewをセットしなくても利用方法があるためだとは思いますが・・・・
あとmodeViewがUIViewクラスにアップキャストしてるため、
ダウンキャストしないとprogressが見えないんですよね・・・
プログレスバーの性質上設定してある値にアクセスする必要性があまりないのはわかりますが、
今回みたいにインクリメントしたい場合には不便ですね。
基底クラスに設定できるプロパティをまとめればどのmodeViewを使う場合もダウンキャストする必要がないのになぁ・・・
MRProgressのラッパークラス作成
目的は
・設定できるプロパティを明確にする
・簡単にプロパティを設定できる
・呼び出しの簡略化
できれば
・イベントが拾えるならクロージャを追加するだけで処理をしてくれるようにしたい
というわけで今からちょっと書いてみようかと思います。