Xamarin.iOS スライダー・プログレスビュー
1 スライダー UISlider
ストーリーボードでツールボックスからSliderを置きます。
Sliderコントロールを選択し、プロパティ「Identity」-「Name」で、名前を付けます。
ここまでの操作で、ViewControllerの制御クラスであるSingleView1ViewControllerで、この名前のインスタンスとして利用可能です。
また、ValueのMininum及びMaxmumで最小値及び最大値を指定できます。
スライダーの値が変化した際のイベントは、ValueChangedで取得可能です。
サンプルでは、ラベルを使用して、スライダーの値をリアルタイムに表示しています。
public override void ViewDidLoad(){ base.ViewDidLoad(); slider1.ValueChanged += (sender, args) => { label1.Text = slider1.Value.ToString(); }; }
スライダーの値は、floatなので、小数単位で変化しますが、これを一定間隔で変化させるためには、同イベントで値を丸める必要があります。
サンプルでは、intにキャストすることで、整数で値が変化するようにしてみました。
public override void ViewDidLoad(){ base.ViewDidLoad(); slider1.ValueChanged += (sender, args) =>{ slider1.Value = (int)slider1.Value; //取得値をintでキャストして、改めて設定する label1.Text = slider1.Value.ToString(); }; }
2 プログレスビュー UIProgressView
ストーリーボードでツールボックスからProgress Viewを置きます。
Progress View を選択し、プロパティ「Identity」-「Name」で、名前を付けます。
ここまでの操作で、ViewControllerの制御クラスであるSingleView1ViewControllerで、この名前のインスタンスとして利用可能です。
サンプルでは、ボタンを押すと、プログラスビューの値を0から1まで0.01単位で変化させています。
また、プログレスビューの縦幅(高さ)は、プロパティ Transform (CGAffineTransform)で変更できます。
public override void ViewDidLoad(){ base.ViewDidLoad(); //プログレスビューの縦幅(高さ)を変更する CGAffineTransform transform = CGAffineTransform.MakeIdentity(); transform.Scale(1f, 10f); //高さを10倍にする progressView1.Transform = transform; //Restartボタンを押した時のイベント button1.TouchUpInside += async (sender, e) => { //0から1まで0.01づつ増加させる for (var n = 0f; n <= 1f; n += 0.01f){ progressView1.Progress = n;// プログレスビューの値設定 label1.Text = n.ToString(); //ラベル表示 await Task.Run(() => Thread.Sleep(100)); //0.1秒の遅延 } }; }