UISlider,增量为5

Tyl*_*294 68 iphone uislider ios

我怎么有我的UISlider去从1-100,增量5

Tuo*_*nen 160

添加这样的目标:

slider.continuous = YES;
[slider addTarget:self
      action:@selector(valueChanged:) 
      forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)

在valueChanged函数中,将值设置为可被5整除的最接近值.

[slider setValue:((int)((slider.value + 2.5) / 5) * 5) animated:NO];
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,避免我想太多^^不过我确实做了一些小小的改变:intincrement = 10; [numberOfAppsInFutur setValue:((int)((numberOfAppsInFutur.value + 增量/2.) / 增量) * 增量) 动画:NO]; (2认同)

Jur*_*ure 50

Swift中稍微优雅的解决方案可能是这样的

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

}
Run Code Online (Sandbox Code Playgroud)

这样您就可以获得5步.您可以在我的帖子中阅读有关设置的更多信息.

  • 链接只会访问包含广告的网站 (2认同)

MB.*_*MB. 9

还有另一种方法可以激活步进器功能.在一般情况下工作

例:

数据范围是0 - 2800,我希望增量为25个单位值.我会做以下事情

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

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

如果你有一个可以修改为直接输入的文本字段,你只需要将滑块值设置为[textfield.text intValue]/unitsteps.


Jus*_*itz 6

对于任何寻找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)
}
Run Code Online (Sandbox Code Playgroud)

或者,只需使用Assistant Editor创建一个Action函数(我最终做了什么)......

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

}
Run Code Online (Sandbox Code Playgroud)


Jav*_*ría 5

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

@IBOutlet weak var sldComponent: UISlider!
Run Code Online (Sandbox Code Playgroud)

...

sldComponent.addTarget(self, action:  #selector(_sldComponentChangedValue),for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

...

func _sldComponentChangedValue(sender: UISlider!) {

        self.sldComponent.setValue((round(sender.value / 7) * 7), animated: false)
        print("\(sender.value)")

}
Run Code Online (Sandbox Code Playgroud)