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

标签 ios swift slider

我想从左向右移动一个 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/

相关文章:

ios - 升级到 Xcode 7 后无法写入文档目录

arrays - Swift - 数组不能转换为 UInt8?

swift - 如何将具有对另一个类的多个引用的类建模为核心数据实体?

swift - 如何使用 if-let 在 Swift 中进行类型删除?

javascript - 如何修改移动设备和选项卡的引导轮播

ios - 连接后立即断开与服务器的连接

iphone - 容器类的内存管理

ios -> -[UITableView dequeueReusableCellWithIdentifier :forIndexPath:] 断言失败

JavaScript 图片库幻灯片

javascript - 如何创建文本 slider