增量为 5 的 UISlider

Posted

技术标签:

【中文标题】增量为 5 的 UISlider【英文标题】:UISlider with increments of 5 【发布时间】:2010-03-25 21:16:18 【问题描述】:

如何让我的UISlider1-1005 为增量?

【问题讨论】:

【参考方案1】:

像这样添加一个目标:

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

并且在 valueChanged 函数中将值设置为能被 5 整除的最接近的值。

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

因此,如果您需要 5 以外的任何间隔,只需将其设置为:

float interval = 5.0f;//set this
[slider setValue:interval*floorf((slider.value/interval)+0.5f) animated:NO];

【讨论】:

我真的觉得自己很愚蠢。吸引我的总是简单的事情。 谢谢,避免我想太多 ^^ 但是我确实做了一点改变:int increment = 10; [numberOfAppsInFutur setValue:((int)((numberOfAppsInFutur.value + increment/2.) / increment) * increment) 动画:NO]; 如果有帮助,有一个完整的例子here。【参考方案2】:

在 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


这样您就可以完成 5 步。您可以在我的post 中阅读有关设置的更多信息。

【讨论】:

链接到只有广告的网站【参考方案3】:

还有另一种激活步进功能的方法。在一般情况下工作

例子:

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

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

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

如果您有一个可以修改为直接输入的文本字段,您只需执行相反的操作,将滑块值设置为 [textfield.text intValue]/unitsteps。

【讨论】:

这样做的副作用是它可以帮助强制限制文本字段值... 这对我来说似乎是完美的解决方案。【参考方案4】:

对于任何寻找 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)

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

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


【讨论】:

【参考方案5】:

在 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)")


【讨论】:

【参考方案6】:

为什么不只是:

@IBAction func onSlider(_ sender: UISlider) 
    let value = Int(sender.value)
    if value % 5 == 0 
        // handle(value) ... 
    

【讨论】:

【参考方案7】:
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(stepper.value) * 5 )"

点击步进器,它会增加 5

【讨论】:

以上是关于增量为 5 的 UISlider的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序(Shell Sort)

MySQL增量备份与恢复实例

Mysql增量备份与恢复实例

mysql增量备份恢复实战企业案例

Java实现希尔排序(增量递减排序)

自动增量 pymongo