UIStackView:添加宽度相同的排列视图

时间:2017-06-09 12:05:02

标签: ios swift uistackview

我有UIStackView并希望在此视图中添加一些排列的视图...有时一个,有时两个,三个......等等.UIStackView具有全宽。我希望排列的视图具有左对齐的相同宽度,以便它们不会填充UIStackView的整个宽度。

这就是我所拥有的:

enter image description here

这就是我想要的:

enter image description here

是否有可能以某种方式进行,或者我是否需要更改UIStackVIew的宽度,具体取决于我添加的排列数量?

我的代码:

        // creating views
    stackView = {
        let v = UIStackView()
        v.axis = .horizontal
        v.alignment = .center
        v.distribution = .fillEqually
        v.spacing = 5
        v.translatesAutoresizingMaskIntoConstraints = false
        return v
    }()
 if let img = chosenImage {
            let imageView: UIImageView = {
                let l = UIImageView()
                l.translatesAutoresizingMaskIntoConstraints = false
                l.image = img
                return l
            }()
            self.stackView?.addArrangedSubview(imageView)
            imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .width, relatedBy: .equal, toItem: imageView, attribute: .height, multiplier: 1, constant: 1))
            imageView.setNeedsUpdateConstraints()
        } else {
            print("Something went wrong")
        }

2 个答案:

答案 0 :(得分:3)

您可以在结尾处向StackView添加一个空的清晰视图,并为此视图设置拥抱和阻力优先级。它应该调整到可用空间,因此“填充视图”的拥抱优先级必须更高,“填充视图”的阻力应该更低,对您的实际项目设置抵抗更高的值

enter image description here

答案 1 :(得分:2)

在情节提要板上,选择“堆栈视图”,然后选择“属性”检查器->“堆栈视图”->“分布”,然后选择“均等填充”。 enter image description here