如何以编程方式向 xib 添加约束
Posted
技术标签:
【中文标题】如何以编程方式向 xib 添加约束【英文标题】:How to add constraints programmaticaly to xib 【发布时间】:2017-09-21 10:42:48 【问题描述】:我有 3 个标签的单元格。标签对单元格和其他标签有限制。如果我从 superview 中删除 Label2,那么我将失去约束并且我的单元格将被更改。删除 Label2 时如何以编程方式在 Label1 和 Label3 之间添加约束。
【问题讨论】:
IO9 + UIStackView 的摇滚 【参考方案1】:这里有两个选项
1) 使用UIStackView
(必须是IOS9 +)
2) 约束
UIStackView
的答案已经给出,所以我建议您使用第二种方法
我已经为水平对齐的标签实现了类似
按照步骤进行
1) 假设您的标签是 L1, L2, L3 ,给每个标签赋予相等的高度(请将 L2 和 L3 拖到 L1 并赋予相等的高度)
2) 将等高约束优先级设置为999
3) 在您的情况下,L2 是可选的(可以根据您的情况隐藏或删除),因此将 HEIGHT 约束到 L2 并使用常量 0 优先级为 750(您的约束永远不会中断)
4) 取 IBOutlet 的约束
5) 在我的情况下,无论您需要什么,都可以提供领先的尾随顶部底部,它是 0
6) 现在您只需要在需要显示隐藏该标签时更改优先级
func setupViewForMyMemoriams ()
self.priority_Width_L2.priority = UILayoutPriorityDefaultLow
// OR
self.priority_Width_L2.priority = UILayoutPriorityRequired
希望对你有帮助
【讨论】:
【参考方案2】:使用 UIStackView 会自动调整高度。
另一种方法是不移除Label2,而是将高度变为0,将Label2包裹在一个UIView中,从顶部Label2到Label3的高度,然后将该UIView的高度更改为0,视觉上它将Label2被移除
【讨论】:
以上是关于如何以编程方式向 xib 添加约束的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式快速向 UITableViewCell 内的 UIStackView 添加约束?