编程的 UISlider 值没有改变

Programmed UISlider value not changing

我的代码使用了一个已编程的滑块,我想在 Xcode 的调试部分找到该值。除了 "ben: 0",我在调试区域中没有看到任何东西。如果我将滑块移动到右侧部分的末尾,它会显示 "ben" 1" 但这是我看到的唯一被更改的值。这就是所有代码,因此您只需复制到 Xcode项目,不需要故事板。

import UIKit

class ViewController: UIViewController {
    var move = UISlider()

    override func viewDidLoad() {
        super.viewDidLoad()

        [move].forEach({
            [=10=].translatesAutoresizingMaskIntoConstraints = false
            self.view.addSubview([=10=])
        })

        move.frame = CGRect(x: view.center.x-115, y: view.center.y+200, width: 200, height: 30)
        move.addTarget(self, action: #selector(moveRight), for: .valueChanged)
    }

    @objc func moveRight(_ sender: UISlider) {
        let currentValue = Int(sender.value)

        print("ben:",currentValue)
    }
}

首先 你需要在你设置 [=11=].translatesAutoresizingMaskIntoConstraints = false 时给那个滑块定位约束,比如 top , leading 和 width ,这会使设置 frame 无效,否则评论它并离开 frame

Second 滑块 minimumValue , maximumValue 的默认值分别为 0,1 因此您需要根据需要设置它们


override func viewDidLoad() {
    super.viewDidLoad() 

    self.view.addSubview(move) 
    move.minimumValue = 10 
    move.maximumValue = 50 
    move.frame = CGRect(x: view.center.x-115, y: view.center.y+200, width: 200, height: 30)
    move.addTarget(self, action: #selector(moveRight), for: .valueChanged)
}

@objc func moveRight(_ sender: UISlider) {
    let currentValue = Int(sender.value)

    print("ben:",currentValue)
}