微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以最佳方式处理 UISlider 值

如何解决以最佳方式处理 UISlider 值

抱歉问这个问题,我需要一个建议。 我有一个滑块来更改图表中的值(两点之间的距离),我是这样做的,我认为这是最糟糕的方法,但我可以找到更好的方法,任何人都可以帮助我做得更好,更先进!

感谢您的帮助

@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()
}

解决方法

您需要找到描述您的变换的数学函数。
假设您真的不想要离散步骤,以下函数应该可以解决问题(这是未经测试的):

@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 进行一些四舍五入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。