首页 > 解决方案 > 处理多个 UISlider

问题描述

我有 4 个 UISlider,最小值为 0,最大值为 10。我有一个常量值(例如:20)。

我的目标是 4 个滑块值的总和不超过该常数值。

例如:如果我拖动并设置为第一个和第二个滑块的最大值(即 10),现在 4 个滑块的总和为 20。

我不想让其他 2 个滑块(第 3、4 个)增加。如果我减少任何滑块(第一个或第二个)值意味着那么我可以允许它们(2,3,4)增加滑块值。

帮助我实现这一目标。

你可以看到这个屏幕截图

你可以看到这个屏幕截图

标签: iosswiftuitableviewuislider

解决方案


在 中@IBAction sliderValueChanged,计算所有滑块的总和。如果总和大于最大值,只需将“导致”滑块的值(例如,当前被用户拖动的滑块)重置为最大允许值。

// ...
let maxSum = 20
// ...
@IBAction func sliderValueChanged(_ sender: UISlider) {
    let sum = slider1.value + slider2.value + slider3.value + slider4.value // better: use outlet collection
    if (sum > maxSum) {
        let overflow = sum - maxSum
        sender.value = sender.value - overflow
    }
}

推荐阅读