Ios 在嵌套视图中,当我添加多个排列的子视图时,它会破坏布局,为什么?

Ios 在嵌套视图中,当我添加多个排列的子视图时,它会破坏布局,为什么?,ios,uikit,uistackview,Ios,Uikit,Uistackview,在使用UIStackView时,我遇到了一个奇怪的问题,无法在嵌套的UIStackView中添加额外排列的子视图: override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white let subViews = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) ->

在使用UIStackView时,我遇到了一个奇怪的问题,无法在嵌套的UIStackView中添加额外排列的子视图:

 override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white

        let subViews = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) -> UIView in
            let v = UIView()
            v.backgroundColor = color
            return v
        }

        let redView = UIStackView(arrangedSubviews: subViews)
        redView.distribution = .fillEqually
        redView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true


        let blueView = UIView()
        blueView.backgroundColor = .blue


        let buttons = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) -> UIView in
            let v = UIView()
            v.backgroundColor = color
            return v
        }

        let buttonsView = UIStackView(arrangedSubviews: buttons)
        buttonsView.distribution = .fillEqually
        buttonsView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true


        let stackView = UIStackView(arrangedSubviews: [redView, blueView, buttonsView])

        view.addSubview(stackView)
        stackView.axis = .vertical
        stackView.fillSuperview()

    }
结果,我得到了完全拉伸的蓝色视图,而不是预期的行为:

但是,当我在底部堆栈视图中保留一个子视图时,它会像预期的那样出现

   let buttons = [UIColor.gray].map { (color) -> UIView in
        let v = UIView()
        v.backgroundColor = color
        return v
    }

    let buttonsView = UIStackView(arrangedSubviews: buttons)
    buttonsView.distribution = .fillEqually
    buttonsView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true


    let stackView = UIStackView(arrangedSubviews: [redView, blueView, buttonsView])


为什么??代码有什么问题?感谢任何帮助或提示,我也尝试了在顶部和底部堆栈视图上设置translatesAutoresizingMaskIntoConstraints=false,但在底部堆栈视图上没有任何运气

buttonView.heightAnchor.constraint(equalToConstant:100)。isActive=true

而不是


buttonView.heightAnchor.constraint(lessthanRequalToConstant:100)。isActive=true

将对齐和分布设置为父堆栈视图,您应调用TranslatesAutoResizezingSkinToConstraints=false以查看buttonView、RedView。感谢您的帮助,我试过了,但我需要将中间视图拉伸,并固定顶视图和底视图,所以很遗憾,分布无助于您的期望输出是什么?期望输出与上一个屏幕截图中的相同,但不是底部的一个灰色视图,我想用buttonsView.axis=.horizontal获得三个子视图,它们的排列方式与顶部堆栈中的viewcheck相同