UITableViewCell 内的自动布局 - 基于两个不同元素的可变大小的动态高度
Posted
技术标签:
【中文标题】UITableViewCell 内的自动布局 - 基于两个不同元素的可变大小的动态高度【英文标题】:Auto Layout inside UITableViewCell - dynamic height based on variable size of two different elements 【发布时间】:2014-11-21 00:46:39 【问题描述】:在 uitableviewcell 内部,我有一个图像视图和一个并排的标签。我正在使用 systemlayoutfittingsize + 大小调整单元通过 ios7/8 的自动布局来驱动表格视图单元高度。我也在以编程方式设置这些约束(请不要故事板答案)。两种可能的情况...
场景 1:标签高度本质上小于图像高度
期望的结果:单元格的大小扩大,使图像(明确设置为 100 宽,75 高)在边界区域中垂直居中,并且标签的上边缘与图像对齐顶边。
场景 2:标签高度本质上大于图像高度
期望的结果:单元格的大小扩大,使标签在单元格中垂直居中。图片的上边缘与标签的上边缘对齐。
【问题讨论】:
【参考方案1】:所以这需要的约束似乎是
对于图像视图: 1. 引脚宽度 = 100 2. 引脚高度 = 75 3. 将前导空间固定到 superview = 10 4. pin top space to superview = 10
对于标签: 1. 将顶部空间固定到 superview = 10 2. 将底部空间固定到 superview = 10 3. 引脚宽度 = 200 4. pin 尾随到 superview = 10 5. 引脚水平间距 = 10(标签和图像视图之间)
然后在代码中我们只需要担心“heightForRow” UITableView 委托方法。由于我们没有为标签设置静态高度,并且我们将其固定在超级视图/单元格的顶部和底部,因此它将根据 UITableView 单元格的高度改变大小。我们必须计算标签文本动态长度的“numberOfLines”。有很多链接可以帮助您解决这个问题 - How to calculate UILabel height dynamically?
【讨论】:
我使用的是代码,而不是故事板来设置约束。这个问题原来是在多行标签上设置 preferredMaxLayoutWidth 之一,尽管它还没有完全修复。以上是关于UITableViewCell 内的自动布局 - 基于两个不同元素的可变大小的动态高度的主要内容,如果未能解决你的问题,请参考以下文章
断言失败 - 带有自动布局和自定义 UICollectionViewFlowLayout 的 UITableViewCell 内的 CollectionView
UITableView 单元内的 UICollectionViewCell 和自动布局
具有动态高度的 UITableViewCell 内的 UITableView