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

bir*_*rdy 5 ios swift uistackview

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

这就是我所拥有的:

在此处输入图片说明

这就是我要的:

在此处输入图片说明

是否有可能以某种方式做到这一点,或者我是否需要根据我添加的排列数量来更改 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")
        }
Run Code Online (Sandbox Code Playgroud)

The*_*mer 6

在 storyboard 上,选择 stackview,属性检查器 -> Stackview -> Distribution,选择 Fill Equally。

在此处输入图片说明


Mic*_*ień 3

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

在此输入图像描述