gpt4 book ai didi

ios - 在 Swift 中从左到右循环 UISlider,反之亦然

转载 作者:行者123 更新时间:2023-11-28 12:33:49 25 4
gpt4 key购买 nike

我想从左向右移动一个 UISlider,一旦它达到 maximumValue,它就会向左移动,直到它达到 minimumValue 然后再次移动到 maximumValue

我正在使用此代码,包括用于慢速移动的计时器。

但问题是,一旦它达到 maximumValue,如果 cause 被触发,它会在第一个增量后移动一个增量,然后再次向前移动,导致 slider 在循环中来回跳转一步一旦 maximumValue 被击中。

我已经尝试使用 backwards bool 变量来告诉 if 因为它只能向后移动,但初始 false 值被拾取得非常“圆”。

我希望你明白了。

@IBAction func setSliderValue(_ sender: UIButton){
mytimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
}


func timerAction(){
let Range = slider.maximumValue - slider.minimumValue;
let Increment = Range/100;
var newval = slider.value + Increment;
var backwards : Bool = false

if(slider.value != slider.maximumValue && backwards == false){
slider.setValue(newval, animated: true)
print("The value of the slider is now \(slider.value)")
sliderValue = Int(slider.value)
print("1. \(backwards)")
}
else if (slider.value == slider.maximumValue || slider.value != slider.maximumValue){
newval = slider.value - 1
print("newval : \(newval)")
print("slider.value : \(slider.value)")
slider.setValue(newval, animated: true)
backwards = true
print("2. \(backwards)")
}
}

最佳答案

答案和上面差不多。它更像是我推荐的样式符号,因为它增加了项目的可读性:(普通变量的驼峰式大小写/大写类,枚举来区分可能的状态而不是 if/else)

var sliderState = SliderState.Incrementing
enum SliderState {
case Incrementing
case Decrementing

}

func timerAction() {
let range = slider.maximumValue - slider.minimumValue
let increment = range/100

switch slider.value {
case slider.maximumValue:
sliderState = .Decrementing
case slider.minimumValue:
sliderState = .Incrementing
default:
break
}

switch sliderState {
case .Incrementing:
slider.setValue(slider.value + increment, animated: true)
case .Decrementing:
slider.setValue(slider.value - increment, animated: true)
}
}

关于ios - 在 Swift 中从左到右循环 UISlider,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414735/

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