Ios Stackview内部其他Stackview宽度问题

Ios Stackview内部其他Stackview宽度问题,ios,swift,uistackview,Ios,Swift,Uistackview,我在IB中创建了一个Stackview,它具有垂直方向。此堆栈视图与父视图具有相同的宽度 例如,现在我以编程方式创建了一个Stackview let stackViewHorizontal = UIStackView() stackViewHorizontal.axis = UILayoutConstraintAxis.horizontal stackViewHorizontal.distribution = UIStackViewDistribution.fillEqu

我在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。 我正在stackViewHorizontal中放置UILabels。我预计这将扩展到全长,每个UiLabel将占据50%的屏幕宽度,因为stackview具有水平轴,并且分布均匀

但是我有一个水平排列的标签。但不考虑屏幕的全宽


我做错了什么,请通知?

激活约束,并给它一个高度:

stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常数:0)。isActive=true
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)。isActive=true

NSLayoutConstraint.activate([
stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常量:0),
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)
])
//

让stackViewHorizontal=UIStackView()
stackViewHorizontal.axis=UILayoutConstraints.horizontal
stackViewHorizontal.distribution=UIStackViewDistribution.Fill
stackViewHorizontal.alignment=UIStackViewAlignment.leading
stackViewHorizontal.spacing=8
self.view.addSubview(stackViewHorizontal)///将其添加到此处
stackViewHorizontal.TranslatesAutoResizengMaskintoConstraints=false
stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常数:0)。isActive=true
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)。isActive=true

激活约束,并为其指定高度:

stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常数:0)。isActive=true
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)。isActive=true

NSLayoutConstraint.activate([
stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常量:0),
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)
])
//

让stackViewHorizontal=UIStackView()
stackViewHorizontal.axis=UILayoutConstraints.horizontal
stackViewHorizontal.distribution=UIStackViewDistribution.Fill
stackViewHorizontal.alignment=UIStackViewAlignment.leading
stackViewHorizontal.spacing=8
self.view.addSubview(stackViewHorizontal)///将其添加到此处
stackViewHorizontal.TranslatesAutoResizengMaskintoConstraints=false
stackViewHorizontal.leadingAnchor.constraint(等式:mainStackView.leadingAnchor,常数:0)。isActive=true
stackViewHorizontal.trailingAnchor.constraint(等式:mainStackView.trailingAnchor,常量:0)。isActive=true

激活后会崩溃,因为它们没有共同的祖先。约束或其锚定是否引用不同视图层次中的项?这是非法的。“***第一次抛出调用堆栈:将其添加到它们之间的共享父视图中,该视图为self.view,在添加约束之前我不理解,在激活之后它会崩溃,因为它们没有共同的祖先。约束或其锚定是否引用不同视图层次中的项?这是非法的。“***首先抛出调用堆栈:在添加约束之前将其添加到它们之间的共享父视图中,即self.view。我不明白