如何为堆栈视图中的视图添加约束
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