gpt4 book ai didi

ios - 给变量类型 CGFloat 一个范围

转载 作者:行者123 更新时间:2023-11-28 06:23:54 25 4
gpt4 key购买 nike

我正在 watchKit 中创建自定义 slider 。我有一个类型为 CGFloat 的变量 sliderPosition,它在 didSet 上设置其在 UI 上的位置。我使用 Digital Crown 更改 slider 的值。

func didCrown(value: Double, rps: Double) {
if isValidRange() {
if value > 0 {
ring.sliderPosition = ring.sliderPosition + 0.01
} else if value < 0 {
ring.sliderPosition = ring.sliderPosition - 0.01
}
}
}

func isValidRange() -> Bool {
if ring.sliderPosition >= 0.00 && ring.sliderPosition <= 1.00 {
return true
} else if ring.sliderPosition <= 0.0 {
ring.sliderPosition = 0
return false
} else {
ring.sliderPosition = 1
return false
}
}

我正在寻找一些 native 函数来为我的 var sliderPosition 提供 0 到 1 之间的范围。

在上面的方法isValidRange 中有一些逻辑错误。因为当值为 1.00 并且我尝试增加该值时,它将设置为 1.01,而当值为 0.00 时,它设置为 -0.01。

最佳答案

正如@Martin R 所建议的那样,您可能正在寻找 -

 extension CGFloat {
func clamp (min: CGFloat, _ max: CGFloat) -> CGFloat {
return Swift.max(min, Swift.min(max, self))
}
}

然后像这样使用它-

func didCrown(value: Double, rps: Double) {
if value > 0 {
ring.sliderPosition = (ring.sliderPosition + 0.01).clamp(min: 0.0, 1.0)
} else if value < 0 {
ring.sliderPosition = (ring.sliderPosition - 0.01).clamp(min: 0.0, 1.0)
}
}

关于ios - 给变量类型 CGFloat 一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com