自动布局约束,用于根据上标签内容向下移动标签

时间:2016-11-26 21:05:00

标签: ios objective-c autolayout

我有一个单元格xib,标签列在另一个下面。这是单元xib的图片。 enter image description here

根据"地址详细信息"的内容,该特定标签将展开,因此,我希望向下移动它的标签,即联系人,联系方式,IFSC和MICR相关标签。

我确实为分支名称标签和地址详细信息标签添加了一些限制。如果我将顶部空间和底部空间约束优先级设置为500,那么我看到所有标签的内容都搞砸了。但是,如果我将优先级设置为1000,那么所有标签看起来都已到位,但是"地址详细信息"标签不会根据其内容进行扩展。

为了扩展标签,我正在使用

label.numberOfLines = 0;
label.text = addressDetails;
[label sizeToFit];

Pic优先级设置为500: enter image description here

Pic优先级设置为1000: enter image description here

我以前从未在这里发布任何与自动布局相关的问题。我不确定我发布的信息是否足以解决我的问题,但是需要任何其他信息,请告诉我。

提前致谢!

2 个答案:

答案 0 :(得分:0)

您应该像这样重置约束。 Add Top, Leading and trailing上的Address Detail Label约束,让UILabel根据内容调整大小(不添加高度限制)。

现在将这些约束添加到Address Label - > (Top = Address Detail Label Top, Give Height Constraint and Leading and trailing)。

接下来的两个标签ContactContact Detail Label必须位于Address detail label下方Address Label以下。

现在heightForRowAtIndexPath应该返回UITableViewAutomaticDimension

现在点击运行按钮并测试它是否适合你。

答案 1 :(得分:0)

Key是将底部约束添加到单元格中的最后一个元素,并将estimatedRowHeight设置为tableviewcell的高度,将rowheight设置为UITableViewAutomaticDimension。无需设置高度约束或实现heightForRowAtIndexPath

对于约束:
 1.首先在tableview单元格中设置分支标签的顶部,前导和尾随空格  2.然后对齐分支,地址,联系标签的前缘  3.然后对齐分支的后缘,地址值和接触值标签  4.对齐地址值和接触值标签的前沿  5.然后对齐地址和地址值的垂直中心。类似的联系和联系价值  6.然后将顶部空间约束添加到地址值标签,并联系值标签  7.将宽度约束添加到地址标签  8.记下细胞高度,比如x。将表格行高设置为x。

这应该完成你的一般约束。

现在有了扩展标签:

  1. 将底部约束添加到联系人值标签(无论最底部的标签)。
  2. 然后在viewdidload中,设置rowheight和估计的行高:

    self.tableView.estimatedRowHeight = x;
    self.tableView.rowHeight = UITableViewAutomaticDimension;
    
  3. 对于地址值标签,将行数设置为0,将换行符设置为自动换行。 enter image description here