Stackview inside 其他stackview宽度问题
Posted
技术标签:
【中文标题】Stackview inside 其他stackview宽度问题【英文标题】:Stackview inside Other stackview width issue 【发布时间】:2018-05-14 13:07:01 【问题描述】:我在 IB 中创建了一个 Stackview,它具有垂直方向。此堆栈视图与父视图具有相同的宽度。
现在我以编程方式创建了一个 Stackview,例如
let stackViewHorizontal = UIStackView()
stackViewHorizontal.axis = UILayoutConstraintAxis.horizontal
stackViewHorizontal.distribution = UIStackViewDistribution.fillEqually
stackViewHorizontal.alignment = UIStackViewAlignment.leading
stackViewHorizontal.spacing = 8
stackViewHorizontal.translatesAutoresizingMaskIntoConstraints = false
stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0)
stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0)
这里的 mainStackView 是通过 IB 创建的 stackview。stackviewHorizontal 是通过编程创建的 stackview。 我将 UILabels 放入 stackViewHorizontal 中。我预计这将扩展到全长,并且每个 UiLabel 将占据屏幕宽度的 50%,因为 stackview 具有水平轴并且分布是 fillEqually。
但我有一个 UiLabels 水平相邻。但没有占据整个屏幕宽度
我做错了什么请通知?
【问题讨论】:
【参考方案1】:激活约束,也给它一个高度:
stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0).isActive = true
stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0).isActive = true
或
NSLayoutConstraint.activate([
stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0),
stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0)
])
//
let stackViewHorizontal = UIStackView()
stackViewHorizontal.axis = UILayoutConstraintAxis.horizontal
stackViewHorizontal.distribution = UIStackViewDistribution.fillEqually
stackViewHorizontal.alignment = UIStackViewAlignment.leading
stackViewHorizontal.spacing = 8
self.view.addSubview(stackViewHorizontal) //// add it here
stackViewHorizontal.translatesAutoresizingMaskIntoConstraints = false
stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor, constant: 0).isActive = true
stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor, constant: 0).isActive = true
【讨论】:
激活后崩溃 因为他们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?这是非法的。 *** 首先抛出调用栈: 在添加约束之前将其添加到它们之间的共享父视图中,即 self.view 我没听懂以上是关于Stackview inside 其他stackview宽度问题的主要内容,如果未能解决你的问题,请参考以下文章
隐藏stackview中的第一个子视图和其他在iOS 10.2上消失但不是11
在 Swift 中以编程方式访问和更新 stackview 中的 label.text 或其他 UILabel 属性
如何以编程方式更改 stackView 内单个 UIView 的高度?