使用最小高度单元格自动调整表格视图
Posted
技术标签:
【中文标题】使用最小高度单元格自动调整表格视图【英文标题】:Autosizing table view with minimum height cells 【发布时间】:2015-02-20 21:00:27 【问题描述】:我有一个针对 ios7/8 的项目。在 iOS7 上我进行手动单元格高度计算,在 iOS8 上我让系统进行数学运算。
单元格主要包含两个垂直堆叠的标签,一个标题和一个描述,它们位于两个不受我的问题影响的装饰视图的左侧。
我试图让所有单元格以 60 磅的高度显示,当它们被点击时,它们不会被截断为全尺寸。这适用于大多数情况。有一个极端情况,标题和描述实际上并没有截断。在这种情况下,点击 iOS8 上的单元格只会将其缩小到最微小、最烦人的一点点。
我想知道除了在 iOS 8 中为我的自动调整大小的表格设置估计的行高之外,是否还有一种方法可以为表格单元格设置最小高度?
我希望这是有道理的,如果我需要更好地解释,请告诉我。关于如何为 iOS 8 自动调整大小的单元格设置最小高度的任何帮助表示赞赏。
普通大小写 - 截断标题和描述/点击展开
边缘情况 - 在点击时没有任何内容被截断/展开实际上会缩小单元格
我的 heightForRowAtIndexPath
在 iOS 8 上返回 UITableViewAutomaticDimension
并在 iOS7 上使用测量单元计算它。我还将rowHeight
属性硬编码为60.0f
,这是我预期的最小高度,与IB 中的布局相匹配。
点击单元格时,我调用一个函数将单元格设置为展开状态。我使用[tableView beginUpdates]
为这些更改设置动画。
- (void) setIsExpanded:(BOOL)isExpanded
_isExpanded = isExpanded;
if (_isExpanded)
[_descriptionText setLineBreakMode:NSLineBreakByWordWrapping];
[_descriptionText setNumberOfLines:0];
[_title setLineBreakMode:NSLineBreakByWordWrapping];
[_title setNumberOfLines:0];
else
[_descriptionText setLineBreakMode:NSLineBreakByTruncatingTail];
[_descriptionText setNumberOfLines:1];
[_title setLineBreakMode:NSLineBreakByTruncatingTail];
[_title setNumberOfLines:1];
[self layoutIfNeeded];
【问题讨论】:
不幸的是,我看不出图像有什么不同。我也不确定如果没有您的代码,我将如何进行测试。我想到的一个想法是在height >= 60.0
的自定义 UITableViewCell
s 视图中创建一个约束。
不敢相信我没有想到这一点。谢谢一堆。保存颜色的视图现在有一个 >= 约束。如果你想回答这个问题,我很乐意接受
【参考方案1】:
根据我的评论:
我看不出图片有什么不同。我也不确定如果没有您的代码,我将如何进行测试。
但是,我想到的一个想法是在 height >= 60.0
的自定义 UITableViewCell
s 视图中创建一个约束
很高兴这有帮助。
【讨论】:
非常好的解决方案 这对我来说很有意义。非常感谢。以上是关于使用最小高度单元格自动调整表格视图的主要内容,如果未能解决你的问题,请参考以下文章
iOS AutoLayout 自动调整整个表格(不是单元格!)高度