【问题标题】:How can I create multiple UISwitches from an array positioned one after another?如何从一个接一个定位的数组创建多个 UISwitches?
【发布时间】:2018-04-04 13:15:43
【问题描述】:

我有一个弹出视图,我想用大约 15 个 UISwitch 填充它。现在手动完成所有这些操作会很愚蠢,所以在 Android 中,我设置了一个 for 循环来从数组创建所述 UISwitches,并且您可以打开和关闭每个 UISwitches,等等,每个都有自己的值。我已经创建了一个开关,但是当尝试从一个数组创建多个时,没有一个显示出来,我不知道如何能够一个接一个地定位它们。

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)

【问题讨论】:

    标签: xcode swift4 uiswitch


    【解决方案1】:
    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 中添加了一个滚动视图,并添加了多个 UISwitch,正如您在代码中为 UISwitch 设置了 Frame 一样。

    【讨论】:

      【解决方案2】:

      我建议查看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)
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 1970-01-01
        • 2022-01-06
        • 2015-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多