UISlider增量为5

我如何让我的UISlider1-1001-1005为增量进行操作?

添加一个像这样的目标:

 slider.continuous = YES; [slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; 

然后在valueChanged函数中将该值设置为可被5整除的最接近的值。

 [slider setValue:((int)((slider.value + 2.5) / 5) * 5) animated:NO]; 

在Swift中稍微优雅的解决scheme可能是这样的

 let step: Float = 5 @IBAction func sliderValueChanged(sender: UISlider) { let roundedValue = round(sender.value / step) * step sender.value = roundedValue // Do something else with the value } 

这样,你可以得到5的步骤。你可以阅读更多关于我的文章中的设置。

还有另一种方法来激活步进function。 在一般情况下工作

例:

数据范围是0 – 2800,我想增量是在25个单位值。 我会做以下

  1. 设置滑块的范围为0 – (maxRange / unitsteps)。
  2. 当值更改方法运行时使用(int)slider.value * unitsteps。

在上面的例子中,我的滑块将在IB中设置为0 – 112.而我的代码将是(int)slider.value * 25。

如果你有一个文本字段,可以修改为直接input,你只需做相反的设置滑块值到[textfield.text intValue] /单位。

对于任何寻找Swift语法的人来说…

 override func viewDidLoad() { super.viewDidLoad() mySlider.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged) } func sliderValueDidChange(sender:UISlider!) { //Set value to the nearest 5... print((Float)((Int)((sender.value + 2.5) / 5) * 5)) sender.setValue((Float)((Int)((sender.value + 2.5) / 5) * 5), animated: false) } 

或者,只需使用助手编辑器创build一个动作function(我最终做了什么)…

 @IBAction func mySliderValueChanged(sender: UISlider) { //Set value to the nearest int sender.setValue(Float(roundf(sender.value)), animated: false) } 

在swift 3中,增量为+/- 7的滑块:

 @IBOutlet weak var sldComponent: UISlider! 

 sldComponent.addTarget(self, action: #selector(_sldComponentChangedValue),for: .valueChanged) 

 func _sldComponentChangedValue(sender: UISlider!) { self.sldComponent.setValue((round(sender.value / 7) * 7), animated: false) print("\(sender.value)") } 
 1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values. 
  1. 左键单击并将标签和步进器拖到您的视图控制器作为出口。

名称标签为“stepperValue”

  1. 再次拖放步进器使其成为一种function – 我称之为我的“function”

@IBAction func inc(sender:AnyObject){
stepperValue.text =“(Int(stepper.value)* 5)”

点击步进器,它会增加5