如何为堆栈视图中的视图添加约束

Posted

技术标签:

【中文标题】如何为堆栈视图中的视图添加约束【英文标题】:How to Add Constraint for view inside stack view 【发布时间】:2017-06-30 17:04:00 【问题描述】:

我有一个包含 4 个按钮的堆栈视图。每个按钮我还添加了子视图。那 4 个按钮的子视图,我尝试通过编程向其中添加约束。一些约束,例如 .Trailing .Leading .Top .Bottom 我无法通过错误约束和堆栈添加到它查看问题。如何将该约束添加到stackview的子视图的任何解决方案。如果有任何样品,这对我来说真的很好。提前感谢

【问题讨论】:

了解更多:developer.apple.com/library/content/documentation/… 【参考方案1】:

UIStackView 的强大之处在于减少您对约束的使用,只需为其提供一些设置信息,例如 轴、分布、对齐、间距。 stack view 会自动布局你的 subview item,因为 stack view 的大小是基于它的'subviews'intrinsicContentSize,你可以通过额外的约束来设置 subview 的大小来覆盖。

给stackView的子视图添加约束和UIView中的其他项是一样的。但 不是 StackView 方式,您应该注意添加冲突约束。

希望此代码演示对您有所帮助:

let stackView = UIStackView()
let demoView = UIView()
demoView.backgroundColor = UIColor.red

stackView.addArrangedSubview(demoView)
demoView.translatesAutoresizingMaskIntoConstraints = false

// add your constraints as usual
demoView.widthAnchor.constraint(equalToConstant: 300).isActive = true
demoView.heightAnchor.constraint(equalToConstant: 200).isActive = true
demoView.trailingAnchor.constraint(equalTo: stackView.trailingAnchor).isActive = true
demoView.topAnchor.constraint(equalTo: stackView.topAnchor).isActive = true

view.addSubview(stackView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
stackView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true

【讨论】:

以上是关于如何为堆栈视图中的视图添加约束的主要内容,如果未能解决你的问题,请参考以下文章

使用堆栈视图和自动布局创建自定义 UITableViewCell

以编程方式将视图添加到垂直堆栈视图打破了垂直堆栈视图的约束

如何为以下两个按钮添加约束

两个堆栈视图中的多行视图的自动布局问题

如何为 UICollectionViewFlowLayout 中的每个单元格添加标题/标签补充视图?

如何为列表视图适配器中的开关添加点击监听器