以最佳方式处理 UISlider 值
Posted
技术标签:
【中文标题】以最佳方式处理 UISlider 值【英文标题】:Handle UISlider value in the best way 【发布时间】:2021-06-28 14:39:50 【问题描述】:很抱歉这个问题,我在这里需要一个建议。 我有一个滑块来更改图表中的值(两点之间的距离),我是这样做的,我认为这是最糟糕的方法,但我可以找到更好的方法,谁能帮我让它变得更好,更先进!
您的帮助将不胜感激
@objc func stockSliderValueChanged(sender: UISlider)
let value = sender.value
stockChart.lineGap = 0.7
if value == 0
stockChart.lineGap = stockChart.lineGap - 0.5
else if value > 0.0, value <= 0.1
stockChart.lineGap = stockChart.lineGap - 0.45
else if value > 0.1, value <= 0.15
stockChart.lineGap = stockChart.lineGap - 0.4
else if value > 0.15, value <= 0.2
stockChart.lineGap = stockChart.lineGap - 0.35
else if value > 0.2, value <= 0.25
stockChart.lineGap = stockChart.lineGap - 0.3
else if value > 0.25, value <= 0.3
stockChart.lineGap = stockChart.lineGap - 0.25
else if value > 0.3, value <= 0.35
stockChart.lineGap = stockChart.lineGap - 0.2
else if value > 0.35, value <= 0.4
stockChart.lineGap = stockChart.lineGap - 0.15
else if value > 0.4, value <= 0.45
stockChart.lineGap = stockChart.lineGap - 0.1
else if value > 0.45, value <= 5
stockChart.lineGap = stockChart.lineGap - 0.05
if value > 0.5, value <= 0.55
stockChart.lineGap = stockChart.lineGap + 0.05
else if value > 0.55, value <= 0.6
stockChart.lineGap = stockChart.lineGap + 0.1
else if value > 0.6, value <= 0.65
stockChart.lineGap = stockChart.lineGap + 0.15
else if value > 0.65, value <= 0.7
stockChart.lineGap = stockChart.lineGap + 0.2
else if value > 0.7, value <= 0.75
stockChart.lineGap = stockChart.lineGap + 0.25
else if value > 0.75, value <= 0.8
stockChart.lineGap = stockChart.lineGap + 0.3
else if value > 0.8, value <= 0.85
stockChart.lineGap = stockChart.lineGap + 0.35
else if value > 0.85, value <= 0.9
stockChart.lineGap = stockChart.lineGap + 0.4
else if value > 0.9, value <= 0.95
stockChart.lineGap = stockChart.lineGap + 0.45
else if value > 0.95, value <= 1
stockChart.lineGap = stockChart.lineGap + 0.5
stockChart.reDraw()
【问题讨论】:
你检查slider.value
,然后从中获取一个值,从(越接近0的值)-0.5到0.5(越接近1的值)。然后,将该值添加到lineCap
。你看到“比率”/“百分比”的计算了吗?你有一个偏移量,但我会告诉你 lineCap 的附加值是从 0 到 100,然后转换为 -50 到 50(只需将其删除 50),然后将其除以 100,你得到 -0.5 到0.5。您看到或感觉到您可以尝试的逻辑吗?
这似乎不是UISlider
的问题,而是计算问题
【参考方案1】:
您需要找到描述您的变换的数学函数。 假设你真的不想要离散步骤,下面的函数应该可以解决问题(这是未经测试的):
@objc func stockSliderValueChanged(sender: UISlider)
let x = sender.value
let offset = 0.7
let computedSliderValue = abs(x - 0.5)
stockChart.lineGap = offset - computedSliderValue
stockChart.reDraw()
如果您确实需要这些步骤,请对computedSliderValue
进行一些舍入。
【讨论】:
以上是关于以最佳方式处理 UISlider 值的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式设置 UISlider 初始值,或者,iOS 程序如何启动?