Мне нужен был слайдер с двумя пальцами, но не мог понять, как это сделать после бесконечных усилий! Поэтому я решил использовать два слайдера как назойливый пользовательский интерфейс, и он работает. Однако теперь мне нужно установить его так, чтобы оба ползунка имели расстояние 4 между ними, т.е. когда оба слайдера находятся рядом друг с другом, они не могут приближаться к 4 значениям. поэтому, когда min составляет 10, max может достигать всего лишь 14. Как это сделать? Я попробовал код ниже из другого вопроса SO, но он не работает.Установите два UISliders, чтобы они никогда не опускались друг за другом в быстром
Я пробовал код ниже, но он устанавливает их как в ноль, так и в нечетные и багги, т.е. когда один перемещается он устанавливает другой к нулю или максимум не будет идти на 55, а 24.
var slider1:Float = 0.0
var slider2:Float = 0.0
func configureDefaultMaxAgeSlider() {
maxAgeSlider.minimumValue = 10
maxAgeSlider.maximumValue = (55 - slider1)
// maxAgeSlider.value = 0
maxAgeSlider.continuous = true
}
func configureDefaultAgeSlider() {
ageSlider.minimumValue = 10
ageSlider.maximumValue = (55 - slider2)
// ageSlider.value = 0
ageSlider.continuous = true
}
@IBOutlet weak var maxAgeLabel: UILabel!
@IBOutlet weak var ageSlider: UISlider!
@IBOutlet weak var maxAgeSlider: UISlider!
@IBAction func ageSliderValueChanged(sender: UISlider) {
let minAgeValue = Int(sender.value)
ageLabel.text = "\(minAgeValue)"
minAgeSearch = "\(minAgeValue)"
slider1 = (sender.value)
configureDefaultMaxAgeSlider()
}
@IBAction func maxAgeSliderValueChanged(sender: UISlider) {
let maxAgeValue = Int(sender.value)
maxAgeLabel.text = "\(maxAgeValue)"
maxAgeSearch = "\(maxAgeValue)"
slider1 = (sender.value)
configureDefaultAgeSlider()
}
Я нашел его в ObjC, но я не знаю, как преобразовать его. SO objc answer
Редактировать
Я почти есть концепция его работы кто-нибудь какой-либо идеи, что я делаю неправильно ???
@IBAction func ageSliderValueChanged(sender: UISlider) {
let minAgeValue = Int(sender.value)
ageLabel.text = "\(minAgeValue)"
minAgeSearch = "\(minAgeValue)"
if ageSlider.value > maxAgeSlider.value {
maxAgeSlider.value = ageSlider.value
}
minAgeUserDefaults.setObject(minAgeSearch, forKey: "name")
}
@IBAction func maxAgeSliderValueChanged(sender: UISlider) {
let maxAgeValue = Int(sender.value)
maxAgeLabel.text = "\(maxAgeValue)"
maxAgeSearch = "\(maxAgeValue)"
if maxAgeSlider.value < ageSlider.value {
maxAgeSlider.value = ageSlider.value
}
maxAgeUserDefaults.setObject(maxAgeSearch, forKey: "age")
}
ageSlider.continuous = true
maxAgeSlider.continuous = true
Взгляните на эту библиотеку https://github.com/muZZkat/NMRangeSlider –
Я. Я использовал это и пришел в трудности, я не мог получить ползунок, чтобы установить на точка на экране, в которой я нуждалась, продолжала уходить с экрана и просто была болью. Вплоть до моей noobyness, а не NMRangeSlider, это определенно то, что я искал, но мне пришлось отказаться от попытки попробовать и попробовать другой метод. Я пробовал все слайдеры github, которые я мог найти, и мне пришлось идти с двумя ползунками, притворяясь, что они делают тот же эффект. Спасибо хоть. – Grace