如何以编程方式向 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 添加约束的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式向 UIView 添加约束

如何以编程方式快速向 UITableViewCell 内的 UIStackView 添加约束?

在 Swift 中以编程方式设置 XIB 文件的约束

无法以编程方式向视频添加约束

如何向放置在 UIStackView 中的以编程方式创建的 UIButton 添加约束

以编程方式向已以编程方式添加到表格单元格的标签添加约束