2016-12-28 16 views
0

ボタンを押したときにUISliderをminValueからmaxValueに移動して、ボタンをもう一度押すと現在の位置で止めたいので、Swiftを使いたいです。SwiftでUISliderを自動的に移動

私が得た主な問題は、slider.setValue()関数が高速になることです。アニメーションをよりゆっくりとしたいのです。

@IBAction func setSliderValue(_ sender: UIButton){ 
     slider.setValue(100, animated: true) 
     print("The value of the slider is now \(slider.value)") 
     sliderValue = Int(slider.value) 
} 

答えて

0

スライダを自動的に移動する時間を使用できます。 NSTimer変数をグローバルスコープで作成: グローバルスコープ内に1つのBool変数を作成し、それを修正する必要があるかどうかを確認します。

あなたはそれをアニメーション化するとき
var mytimer : NSTimer? 
var reversing : Bool? 

スタートタイマー:タイマーのアクション

reversing = NO; 
mytimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) 

を、あなたはスライダーの値を変更するコードを書くことができます。ボタンのアクション

var sliderrange = slider.maxValue - slider.minValue; 
var increment = sliderrange/100; 
var newval = slider.value; 


if(reversing) 
    { 
    newel = slider.value - increment; 
} 
else 
{ 
    newel = slider.value + increment; 
} 
if(newval >= slider.maxValue) 
{ 
    reversing = true; 
    newval = newval - 2*increment; 

} 
else if(newel <= 0) 
{ 
    reversing = false; 
} 
slider.setValue(newval, animated: true) 

、あなたはすることができますタイマーを停止するだけです。

if mytimer != nil { 
    mytimer!.invalidate() 
    mytimer = nil 
    } 
+0

スライダは左から右に移動し、右から左には移動しませんが、動作します。 –

+0

これで更新されました! – Darshana

0

このコードは動作していますが、スライダは最大値に達したときにスライダが左から右に移動しますが、右から左に移動するのではなく、無効になるまで左から右に移動します。

@IBAction func setSliderValue(_ sender: UIButton){ 
     mytimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) 
     /*slider.setValue(100, animated: true) 
     print("The value of the slider is now \(slider.value)") 
     sliderValue = Int(slider.value)*/ 
    } 


    func timerAction(){ 
     let Range = slider.maximumValue - slider.minimumValue; 
     let Increment = Range/100; 
     let newval = slider.value + Increment; 
     if(Increment <= slider.maximumValue) 
     { 
      slider.setValue(newval, animated: true) 
      print("The value of the slider is now \(slider.value)") 
      sliderValue = Int(slider.value) 
     } 
     else if (Increment >= slider.minimumValue) 
     { 
      slider.setValue(newval, animated: true) 
     } 
    } 
関連する問題