iOS - UIView 不显示在 UIStackView 内部

iOS - UIView does not display inside UIStackView

我有一个 UIStackView,其中一个堆栈需要背景颜色,所以我在里面放了一个 UIView,但是 UIView 永远不会显示。 UIView 当前有一个子视图,一个 UILabel,但最终应该有另一个 UIStackView。如果我将 UILabel 显示为 UIStackView 的直接子项而不是 UIView,则 UILabel 会正确显示。那么,我的 UIView 缺少或错误的约束是什么?

                        let stack = UIStackView()
                        stack.axis = .Vertical
                        stack.alignment = .Leading
                        stack.distribution = .EqualCentering
                        stack.spacing = 0

                        let width = UIScreen.mainScreen().bounds.size.width

                        let frame = CGRect(x: 0, y: 0, width: width, height: 50)
                        let viewHolder = UIView(frame: frame)
                        viewHolder.backgroundColor = blueColor

                        //Needs a blue background
                        let name = UILabel()
                        name.text = nameText
                        name.textColor = yellowColor
                        name.backgroundColor = blueColor
                        name.font = UIFont.boldSystemFontOfSize(32.0)                        

                        let address = UILabel()
                        address.text = addressText

                        let dateTime = UILabel()
                        dateTime.text = calString

                        viewHolder.addSubview(name)
                        stack.addArrangedSubview(viewHolder)
                        stack.addArrangedSubview(address)
                        stack.addArrangedSubview(dateTime)

                        self.stackView.addArrangedSubview(stack)

当 运行 时,它会产生这个:

如果我从等式中删除 UIView,即:

                        let stack = UIStackView()
                        stack.axis = .Vertical
                        stack.alignment = .Leading
                        stack.distribution = .EqualCentering
                        stack.spacing = 0

                        let width = UIScreen.mainScreen().bounds.size.width

                        let frame = CGRect(x: 0, y: 0, width: width, height: 50)
                        let viewHolder = UIView(frame: frame)
                        viewHolder.backgroundColor = blueColor

                        //Needs a blue background
                        let name = UILabel()
                        name.text = nameText
                        name.textColor = yellowColor
                        name.backgroundColor = blueColor
                        name.font = UIFont.boldSystemFontOfSize(32.0)                        

                        let address = UILabel()
                        address.text = addressText

                        let dateTime = UILabel()
                        dateTime.text = calString

                        //viewHolder.addSubview(name)
                        stack.addArrangedSubview(name) //Add the label directly to the UIStackView
                        stack.addArrangedSubview(address)
                        stack.addArrangedSubview(dateTime)

                        self.stackView.addArrangedSubview(stack)

我得到:

我只需要蓝色部分横跨屏幕

所以,答案是,不要使用 UIStackView。使用内置的 UITableView 进行这种布局。