在 Swift 中自动移动 UISlider

Posted

技术标签:

【中文标题】在 Swift 中自动移动 UISlider【英文标题】:Move UISlider automatically in Swift 【发布时间】:2016-12-28 11:46:21 【问题描述】:

我想在你点击按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次点击按钮时将其停止在当前位置,我想使用 Swift。

我遇到的主要问题是函数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)

【问题讨论】:

【参考方案1】:

您可以使用时间来自动移动滑块。 在全局范围内创建 NSTimer 变量: 还要在全局范围内创建一个 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;

newel = reversing ? (slider.value - increment) : (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
  

【讨论】:

它的工作,虽然滑块从左到右移动,而不是从右到左返回。 更新答案!【参考方案2】:

这个代码是有效的,虽然滑块只从左到右移动,而不是在达到最大值时从右到左移动,它应该从左到右然后从右到左移动,直到失效。

@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)
        
    

【讨论】:

以上是关于在 Swift 中自动移动 UISlider的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift ios中自动将光标从一个文本字段移动到另一个文本字段?

使用 Swift 在 Scenekit 中移动相机

在 Swift 中自动重新排序核心数据

在计时器的帮助下,Swift 4 在页面视图控制器中自动滑动

当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?

如何在swift 4中禁用otp屏幕中文本字段上光标的中间外观