2010-03-25 65 views

回答

150

添加一个目标是这样的:

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

而且在功能的valueChanged将该值设置为最接近的值是整除5

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

我感觉老实说很愚蠢。 ays简单的事情,让我。 – 2012-02-05 20:26:16

+1

谢谢,请避免我多想它^^但我做了一些小改动:int increment = 10; [numberOfAppsInFutur setValue:((int)((numberOfAppsInFutur.value + increment/2。)/ increment)* increment)animated:NO]; – 2012-04-27 14:26:27

+0

万一它有帮助,有一个完整的例子[这里](http://stackoverflow.com/a/8219848/168594)。 – zekel 2014-07-05 11:11:05

5

还有另一种方式为主动步进功能。工作在一般情况下

实施例:

范围的数据是0 - 2800和我想要的增量是在25倍单位的值。我会做以下几点:

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

将在IB设置为范围0 - 112 和我的代码是(INT)slider.value * 25

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

+0

这是一个副作用,它可以帮助强制限制文本框的值... – 2011-10-07 15:16:19

+0

这对我来说似乎是最完美的解决方案。 – Umair 2017-08-29 11:28:31

5

为寻找雨燕语法...

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

另外,刚刚创建与助理编辑(我就是这样做最终)的动作功能...

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

} 
27

稍微在斯威夫特更优雅的解决方案可能是这样的

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 

} 

这样你得到ste ps of 5.你可以在我的post中阅读更多关于设置的信息。

-4
1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values. 
  • 左点击标签和步进拖动到视图控制器作为网点。
  • 名称标签为 “stepperValue”

  • 拖放步进再次使其成为一个FUNC-我打电话给我 “FUNC”
  • @IBAction FUNC inc(sender:AnyObject){
    stepperValue.text =“(Int(步进器。值)* 5)”

    点击步进,它将通过5

    +1

    请编辑您的答案以获得更好的可读性。 – 2016-04-26 16:28:11

    4

    增量迅速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)") 
    
    }