如何从一个接一个的阵列创建多个UISwitch?

时间:2018-04-04 13:15:43

标签: xcode swift4 uiswitch

我有一个弹出视图,我想填充~15个UISwitch。现在手动完成所有这些操作是愚蠢的,所以在Android中我设置了一个for循环来从一个数组创建所说的UISwitch,你可以打开和关闭每个,依此类推,每个都有自己的值。我创建了一个开关,但是当尝试从数组创建多个时,没有显示,我不知道我将如何能够一个接一个地定位它们。

let mySwitch = UISwitch()
mySwitch.isOn = false
mySwitch.center = self.view.center
mySwitch.thumbTintColor = UIColor(red: 23.0/255, green: 145.0/255, blue: 255.0/255, alpha: 1.0)
mySwitch.tintColor = UIColor(red: 23.0/255, green: 145.0/255, blue: 255.0/255, alpha: 1.0)
mySwitch.onTintColor = UIColor.black
mySwitch.backgroundColor = UIColor.white

self.view.addSubview(mySwitch)

2 个答案:

答案 0 :(得分:0)

var scrol = UIScrollView()

    override func viewDidLoad() {
        super.viewDidLoad()
scrol.frame = CGRect(x: 10, y: 0, width: self.view.frame.size.width, height: 200)
            var yPos = 0.0
            for i in 0...10 {
                let mySwitch = UISwitch()
                mySwitch.frame = CGRect(x: 10, y: yPos + 10, width: 50, height: 25)
                mySwitch.isOn = false
               // mySwitch.center = self.view.center
                mySwitch.tag = i
                mySwitch.thumbTintColor = UIColor(red: 23.0/255, green: 145.0/255, blue: 255.0/255, alpha: 1.0)
                mySwitch.tintColor = UIColor(red: 23.0/255, green: 145.0/255, blue: 255.0/255, alpha: 1.0)
                mySwitch.onTintColor = UIColor.black
                mySwitch.backgroundColor = UIColor.white
                yPos = Double(mySwitch.frame.origin.y + mySwitch.frame.size.height)
                mySwitch.addTarget(self, action: #selector(onSwitchChange(_:)), for: .touchUpInside)
                scrol.addSubview(mySwitch)
            }
            scrol.backgroundColor = .yellow
            scrol.isScrollEnabled = true
            self.view.addSubview(scrol)
    }
func onSwitchChange(_ sender: UISwitch) {
    print(" switch tapped \(sender.tag)")

}

看看这个,我在UIView中添加了一个scrollView,并添加了多个UISwitch,就像你在为UISwitch设置Frame的代码中所给出的那样。

enter image description here

答案 1 :(得分:0)

我建议您查看UIStackView

这使您可以轻松地在屏幕上以一致的位置添加多个UI元素,而不会有任何麻烦。

首先,您需要创建堆栈视图:

let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .vertical
stackView.spacing = 10

添加并限制它:

view.addSubview(stackView)

NSLayoutConstraint.activate([
    stackView.topAnchor.constraint(equalTo: view.topAnchor),
    // etc, etc
])

然后你只需要在堆栈视图中添加一系列开关:

for i in 0..<10 {
    let switch = UISwitch()
    // Configure switch
    stackView.addArrangedSubview(switch)
}