使用最小高度单元格自动调整表格视图

时间:2015-02-20 21:00:27

标签: ios uitableview

我有一个针对iOS7 / 8的项目。在iOS7上我进行手动单元格高度计算,在iOS8上我让系统进行数学运算。

单元格主要包含两个垂直堆叠的标签,标题和描述,位于两个装饰视图的左侧,不受我的问题影响。

我试图让所有细胞以60点的高度出现,当它们被点击时,它们不会被截断为全尺寸。这适用于大多数情况。有一个边缘情况,标题和描述实际上不会截断。在这种情况下,在iOS8上点击单元格会缩小它只是最微小,令人讨厌的一点点。

我想知道是否有办法为表格单元设置最小高度,除了在iOS 8中设置自动调整表的估计行高?

我希望这是有道理的,如果我需要更好地解释,请告诉我。对于如何为iOS 8自动调整单元设置最小高度,我们非常感谢。

正常情况 - 截断的标题和描述/在点击时展开

Truncate title / description Expanded title / description

边缘情况 - 没有任何内容被截断/展开实际缩小单元格

Nothing truncated Nothing truncated expanded

我的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];
}

1 个答案:

答案 0 :(得分:22)

根据我的评论:

我看不出图像有什么不同。我也不确定如果没有你的代码,我会知道如何进行测试。

但是,最重要的一点是,在UITableViewCell的自定义height >= 60.0视图中创建一个约束

很高兴这有帮助。