Как мне сделать UISlider
UISlider
с 1-100
с шагом 5
?
UISlider с шагом 5
Ответ 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];
Ответ 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. Вы можете прочитать больше о настройке в моем посте.
Ответ 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)
}
В качестве альтернативы просто создайте функцию 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
1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values.
- щелкните левой кнопкой мыши и перетащите ярлык и шагомер в контроллер вашего вида как выходы.
name label как "stepperValue"
- перетащить шаговый переключатель снова, сделав его func- я назвал мой "func"
@IBAction func inc (отправитель: AnyObject) {
stepperValue.text = "(Int (stepper.value) * 5)"
щелкните шагомер, и он увеличится на 5