iOS8 基于动态标签高度的动态单元格高度
iOS8 Dynamic Cell Height based on Dynamic Label height
我正在尝试构建遵循以下内容的提要:
左上角标签是用户名,右上角是时间戳。正下方是描述符,然后第三个标签是动态 post 正文。底部的两个按钮各做一些改变正上方标签的事情。
我想完成两件事:我已经成功地使用自动布局将左上标签限制在顶部和左侧。我已经成功地使用自动布局将右上角的标签限制在顶部和右侧。我在左上角布局上设置了一个显式宽度,这样如果用户名太长,它将在右上角标签之前 t运行 排列。 第一个问题:是否可以使宽度动态化,使右上角的标签贴在单元格的右上角,左上角的标签 t运行cates 如果它在距右上标签一厘米?这对于不同的屏幕尺寸很重要。
下一步:我已经成功建立了动态高度标签(从顶部向下第 3 个),通过将其限制在左右边距,使其具有整个单元格的宽度。我也尝试将它限制在底部,但这是我 运行 进入我的大问题的地方。如果文本太长,它会泄漏到下一个单元格中。我知道为什么会这样,但我不知道如何解决。
如果我没有:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 128
}
在我的代码中,然后我 运行 变成这样:"Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead."
但是,当我将该代码放入我的视图控制器时,标签确实具有动态高度,但由于每一行的高度都是恒定的,所以它会泄漏。我不知道如何缓解这种情况,因为如果没有那条线,所声明的警告将改为使用标准高度,它将我所有的标签和按钮集中在一起(然后由于某种原因,动态标签文本不再具有动态高度,但符合一行)。
如何解决这个问题?我一直困惑并坚持了很长时间。
第一个问题:是的。您需要使用不同的水平压缩阻力优先级。您可能还需要较低优先级的不等式来设置限制。
第二个问题:问题是你没有完全确定高度。从单元格的顶部到单元格的底部都必须有约束,以便单元格的高度由内而外严格地由其内容决定。
要为单元格设置动态高度,只需为其标签设置动态高度和宽度。
通过设置
- 标签的内容拥抱优先级小于1000。
- 并且避免为标签设置高度和宽度的约束。
- 只需为顶部、左侧以及底部元素是否可用设置约束
然后还设置底部约束。
我正在尝试构建遵循以下内容的提要:
左上角标签是用户名,右上角是时间戳。正下方是描述符,然后第三个标签是动态 post 正文。底部的两个按钮各做一些改变正上方标签的事情。
我想完成两件事:我已经成功地使用自动布局将左上标签限制在顶部和左侧。我已经成功地使用自动布局将右上角的标签限制在顶部和右侧。我在左上角布局上设置了一个显式宽度,这样如果用户名太长,它将在右上角标签之前 t运行 排列。 第一个问题:是否可以使宽度动态化,使右上角的标签贴在单元格的右上角,左上角的标签 t运行cates 如果它在距右上标签一厘米?这对于不同的屏幕尺寸很重要。
下一步:我已经成功建立了动态高度标签(从顶部向下第 3 个),通过将其限制在左右边距,使其具有整个单元格的宽度。我也尝试将它限制在底部,但这是我 运行 进入我的大问题的地方。如果文本太长,它会泄漏到下一个单元格中。我知道为什么会这样,但我不知道如何解决。
如果我没有:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 128
}
在我的代码中,然后我 运行 变成这样:"Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead."
但是,当我将该代码放入我的视图控制器时,标签确实具有动态高度,但由于每一行的高度都是恒定的,所以它会泄漏。我不知道如何缓解这种情况,因为如果没有那条线,所声明的警告将改为使用标准高度,它将我所有的标签和按钮集中在一起(然后由于某种原因,动态标签文本不再具有动态高度,但符合一行)。
如何解决这个问题?我一直困惑并坚持了很长时间。
第一个问题:是的。您需要使用不同的水平压缩阻力优先级。您可能还需要较低优先级的不等式来设置限制。
第二个问题:问题是你没有完全确定高度。从单元格的顶部到单元格的底部都必须有约束,以便单元格的高度由内而外严格地由其内容决定。
要为单元格设置动态高度,只需为其标签设置动态高度和宽度。 通过设置
- 标签的内容拥抱优先级小于1000。
- 并且避免为标签设置高度和宽度的约束。
- 只需为顶部、左侧以及底部元素是否可用设置约束 然后还设置底部约束。