编程的UISlider值未更改

问题描述 投票:0回答:1

我的代码使用编程的滑块,我想在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)
    }
}
ios swift slider cgrect sender
1个回答
0
投票
[First您需要在设置$0.translatesAutoresizingMaskIntoConstraints = false时赋予滑块定位约束,例如top,Lead和width,这将使设置frame无效,否则对其进行注释并离开frame

[Second滑块的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) }

© www.soinside.com 2019 - 2024. All rights reserved.