基于动态标签高度的iOS8动态单元格高度

时间:2015-01-30 03:07:41

标签: ios uitableview swift autolayout

我正在尝试构建一个跟随此的源:

enter image description here

左上角的标签是用户名,右上角是时间戳。右下方是描述符,然后第三个标签是动态帖体。底部的两个按钮各自做一些改变标签正上方的东西。

我正在努力完成的两件事:我已成功使用自动布局将左上角的标签限制在左上角和左上角。我已成功使用自动布局将右上角的标签限制在顶部和右侧。我在左上角布局中设置了明确的宽度,这样如果用户名太长,它将在右上角标签之前截断。 第一个问题:是否可以使宽度动态,使右上标签保持贴在单元格的顶部和右侧部分,如果左上标签距离右上标签在1厘米以内,则左上标签会截断?这对于不同的屏幕尺寸很重要。

下一步:我已经成功建立了动态​​高度标签(从顶部向下第3个),通过将其约束到左右边距来获得整个单元格的宽度。我也尝试将它限制在底部,但这是我遇到的一个大问题。如果文本太长,文本将泄漏到下一个单元格中。我知道为什么会这样,但我不知道如何解决它。

如果我没有:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 128
}

在我的代码中,然后我遇到了这个:“仅警告一次:检测到一个情况,其中约束模糊地表明tableview单元格的内容视图的高度为零。我们正在考虑崩溃是无意的并且使用标准高度代替“。

但是,当我将该代码放入我的View Controller时,标签确实具有动态高度,但由于每行都有一个恒定的高度,因此它会泄漏。我不知道如何缓解这一点,因为如果没有该行,则所声明的警告使用标准高度,将所有标签和按钮整合在一起(然后由于某种原因,动态标签文本不再有一个动态高度,但相反符合一行)。

如何解决此问题?我一直很困惑,并且坚持了很久。

2 个答案:

答案 0 :(得分:0)

  • 第一个问题:是的,是的。您需要使用不同的水平压缩阻力优先级。您可能还需要较低优先级的不等式来设置限制。

  • 第二个问题:问题是你没有完全确定身高。您必须从单元格的顶部到单元格的底部一直有约束,以便单元格的高度由其内部的内容严格决定。

答案 1 :(得分:0)

要设置单元格的动态高度,只需为其标签设置动态高度和宽度即可。 通过设置

  1. 标签的内容拥抱优先级小于1000。
  2. 并且还要避免将高度和宽度的约束设置为标签。
  3. 只需设置Top,left和底部元素的约束条件 然后还设置了底部约束。