首页 > 解决方案 > UIStackView 高度,内容在中间而不是在顶部

问题描述

我有一个 UIStackview,当它装满一堆东西时,它很好,但是,当它装满 1 或 2(例如)时,它会将它们展开而不是将它们保持在顶部。我做错什么了?

在此处输入图像描述

这就是发生的事情。我希望他们处于顶部,并且在其下方没有任何权利。 在此处输入图像描述

for i in 0..<self.itemSpecificsArray.count {
                    let itemSpecificName = UILabel()
                    let itemSpecificValue = UILabel()

                    itemSpecificName.textColor = UIColor(red: 236.0 / 255.0, green: 91.0 / 255.0, blue: 110.0 / 255.0, alpha: 1.0)
                    itemSpecificName.textAlignment = .left
                    itemSpecificName.font = UIFont.boldSystemFont(ofSize: 18.0)

                    itemSpecificValue.textColor = UIColor.black
                    itemSpecificValue.textAlignment = .left
                    itemSpecificValue.font = UIFont.systemFont(ofSize: 15.0)

                    print(self.itemSpecificsArray[i].itemSpecificName)
                    print("** \(self.itemSpecificsArray[i].itemSpecificValue)")
                    itemSpecificName.text = self.itemSpecificsArray[i].itemSpecificName
                    itemSpecificValue.text = self.itemSpecificsArray[i].itemSpecificValue

                    self.mainSectionItemSpecifics.addArrangedSubview(itemSpecificName)
                    self.mainSectionItemSpecifics.addArrangedSubview(itemSpecificValue)
                     if (i == self.itemSpecificsArray.count) {
                        let view = UIView()
                        self.mainSectionItemSpecifics.addArrangedSubview(view)
                    }
                }

对于每个索引,它都有一个 itemSpecificName 和 itemSpecificValue。如果我需要将这两个标签放在视图中,那么我可以这样做......这可能会解决它,不是吗?

标签: iosswiftuistackview

解决方案


UIStackView想要拉伸其排列的子视图以填充其自己的(堆栈视图的)边界。如果您不希望标签被拉伸,您要么需要更改对 的约束,UIStackView以便它可以缩小以适合其子项,要么将排列的子视图添加到可以吸收提取空间的堆栈视图中。例如,您可以UIView在两个标签之后添加一个没有约束的纯文本。自动布局会将堆栈视图边界的额外空间提供给UIView.


推荐阅读