在动态大小的UITableViewCell中使UILabel适合高度

时间:2013-11-07 15:44:09

标签: ios objective-c uitableview

我的应用中有以下设置: 当有一个单元格被选中时,我有一个UITableView,它有动画高度变化。在单元格中,我有一个标签,当我没有选择单元格时,我想要在一行上进行截断,然后选择单元格时(单元格高度变得更大)我希望文本(UILabel)打开多行,基于文本。

这是我目前的代码:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {


    if(self.selectedIndex != nil && [self.selectedIndex isEqual:indexPath]) {
        return kCellHeight * 3.9;

    }

    return kCellHeight;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [tableView deselectRowAtIndexPath:indexPath animated:NO];

    ProductCell *cell = (ProductCell *) [tableView cellForRowAtIndexPath:indexPath];


    if (![indexPath isEqual:self.selectedIndex]) {

        cell.addButton.hidden = NO;

        cell.descLabel.numberOfLines = 0;
        cell.descLabel.lineBreakMode = NSLineBreakByWordWrapping;
        [cell.descLabel sizeToFit];

        tableView.scrollEnabled = NO;

        self.selectedIndex = indexPath;

    }else {

        self.selectedIndex = nil;

        cell.descLabel.lineBreakMode = NSLineBreakByTruncatingTail;

        tableView.scrollEnabled = YES;


        cell.addButton.hidden = YES;

    }






    [tableView beginUpdates];


    [tableView endUpdates];


}

第一部分(当细胞被选中,扩展并且高度变大时)文本符合我的要求,但是第二部分(当细胞收缩时,细胞高度恢复到正常高度)文本不适合新的高度,并根据我的要求被截断,它只是保持多线。我怎样才能解决这个问题?因此,当选择单元格时,文本会被多线化,当取消选择单元格时,文本会恢复到正常的截断状态?

1 个答案:

答案 0 :(得分:0)

修改

覆盖 - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

并在此函数中添加以下行     cell.descLabel.numberOfLines = 1;