我的代码使用编程的滑块,我想在Xcode的debug部分中找到该值。除“ ben:0”外,我在调试区域中什么都没有看到。如果我将滑块移到右侧部分的末尾,它将显示“ ben” 1”,但这是我看到的唯一更改的值,这些都是代码,因此您只需将其复制到Xcode项目中,就不需要故事板。

import UIKit

class ViewController: UIViewController {
    var move = UISlider()

    override func viewDidLoad() {
        super.viewDidLoad()

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

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

最佳答案

首先,您需要在设置$0.translatesAutoresizingMaskIntoConstraints = false时赋予滑块定位约束,例如top,Lead和width,这会使设置frame无效,否则请对其进行注释并离开frame

滑块的minimumValuemaximumValue的第二个默认值分别为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)
}

关于ios - 编程的UISlider值不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58906466/

10-10 09:18