UISlider增量为5
我如何让我的UISlider
从1-100
到1-100
以5
为增量进行操作?
添加一个像这样的目标:
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个单位值。 我会做以下
- 设置滑块的范围为0 – (maxRange / unitsteps)。
- 当值更改方法运行时使用(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.
- 左键单击并将标签和步进器拖到您的视图控制器作为出口。
名称标签为“stepperValue”
- 再次拖放步进器使其成为一种function – 我称之为我的“function”
@IBAction func inc(sender:AnyObject){
stepperValue.text =“(Int(stepper.value)* 5)”
点击步进器,它会增加5