无法在 UIStackView 中设置编程布局约束

Posted

技术标签:

【中文标题】无法在 UIStackView 中设置编程布局约束【英文标题】:Cannot Set Programmatic Layout Constraints in UIStackView 【发布时间】:2017-05-25 01:52:38 【问题描述】:

我正在尝试将通过情节提要创建的 UIStackView 中的单选按钮居中。但是,单选按钮是根据 Firebase 中的数据以编程方式在 UIStackView 中创建的。

我正在使用DLRadioButtons 提供的库。

UIStackView在Label下面,命名为radiostackView:

根据 Firebase 数据添加单选按钮的代码:

  `
    pollRef.observe(FIRDataEventType.value, with: (snapshot) in
    self.numberOfChildren = Int(snapshot.childSnapshot(forPath: "answers").childrenCount)
    self.passLabel.text = String(self.numberOfChildren)
    print(self.numberOfChildren)

    var buttons = [DLRadioButton]()

      for x in 0..<self.numberOfChildren 
    let answerLabel = snapshot.childSnapshot(forPath: "answers").childSnapshot(forPath: String(x+1)).childSnapshot(forPath: "answer").value
    let firstRadioButton = self.createRadioButton(frame: CGRect(x: 1, y:1 , width: 80.0, height: 1.0), title: answerLabel as! String, color: UIColor.black)
        firstRadioButton.tag = x
        firstRadioButton.translatesAutoresizingMaskIntoConstraints = false
        buttons.append(firstRadioButton)
        let margins = self.radioStackView.layoutMarginsGuide
        firstRadioButton.topAnchor.constraint(equalTo: margins.topAnchor, constant: 5).isActive = true
        self.radioStackView.addArrangedSubview(firstRadioButton)
        


    let groupButtons = DLRadioButton()
    groupButtons.otherButtons = buttons
    )





override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

` 输出:按钮不直接堆叠在一起;尝试使用界面生成器,但仍然无法删除间距

【问题讨论】:

【参考方案1】:

要在stackView 中堆叠视图,您需要使用addArrangedSubview

self.radioStackView.addArrangedSubview(firstRadioButton)

【讨论】:

感谢您的帮助,我已经更新了代码。我现在无法让按钮直接堆叠在一起。有什么想法吗? 检查spacing属性 我使用了界面生成器,我正在玩这些设置并且间距没有改变。 stackView 与约束一起使用,因此您必须为所有 arrangedSubviewsstackView 本身设置高度约束 谢谢,我添加了编程约束(顶部锚点),但现在出现运行时错误。感谢您的帮助。

以上是关于无法在 UIStackView 中设置编程布局约束的主要内容,如果未能解决你的问题,请参考以下文章

Barrier 未在约束布局中设置为 referenceIds?

使用swift在UiStackview中设置UiLabel的高度

在 Android Kotlin 的约束布局中设置适当的约束

代码中设置的自动布局约束未出现在界面生成器中

在自动布局中设置约束,以便 UIView 包装可见的子项

在代码中设置自动布局约束时出现奇怪的问题