ios - 处理多个 UISlider
问题描述
我有 4 个 UISlider,最小值为 0,最大值为 10。我有一个常量值(例如:20)。
我的目标是 4 个滑块值的总和不超过该常数值。
例如:如果我拖动并设置为第一个和第二个滑块的最大值(即 10),现在 4 个滑块的总和为 20。
我不想让其他 2 个滑块(第 3、4 个)增加。如果我减少任何滑块(第一个或第二个)值意味着那么我可以允许它们(2,3,4)增加滑块值。
帮助我实现这一目标。
解决方案
在 中@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
}
}
推荐阅读
- python - 如何在Python中计算矩阵中所有主题之间的成对距离
- kubernetes - 为 ignite 部署 control-center gridgain
- c - 如何过滤C中的格式化输入?
- android - 如何在套接字编程中从输出流到输入流获取长度值?
- python - 命令“pip install resume-parser”不起作用
- mysql - HCL OneTest Data 是否支持从 Mysql 和 Mongo DB 导入模式或样本数据集?
- c# - WPF UserControl:使多个链接的依赖项属性保持同步,而不会导致递归循环 堆栈溢出
- javascript - 在 Deno v1.6.x 中使用 Handlebars
- mysql - 将列转置为行
- c - 将右值与 & 运算符一起使用