2016-12-28 3 views
0

버튼을 다시 쳤을 때 현재 위치에서 멈추고 루프에서 maxValue에서 minValue로 UISlider를 이동하려면 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 변수 만들기 : 전역 범위에 하나의 Bool 변수를 만들어 수정해야하는지 확인하십시오.

var mytimer : NSTimer? 
var reversing : Bool? 

시작 타이머 당신은 그것을 애니메이션을 적용 할 때 버튼 동작에

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) 

, 당신은 할 수 있습니다

타이머 작업에
reversing = NO; 
mytimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: 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) 
     } 
    } 
관련 문제