0

我正在使用分组的uitableview。我有很多部分。在第一部分中只有一个 UITableViewCell。在这个单元格中,我将显示一个文本。

问题是我不知道文本的字符数,我想更改单元格的高度以显示整个文本。

有人能帮我吗?谢谢

4

3 回答 3

0

在 UItableViewDelegate 方法中 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 您可以返回特定行的高度。为此,您必须知道要在该行中显示的字符串的长度。看到这个链接Get tableView:heightForRowAtIndexPath: 发生在 tableView:cellForRowAtIndexPath:?

于 2013-07-28T07:20:42.623 回答
0

您将不得不使用heightForRowAtIndexPath. 在此范围内,您将必须执行您在单元格中layoutsubviews或单元格中所做的所有计算cellForRowAtIndexPath。为此,您必须弄清楚文本的长度。cellForRowAtIindexPath无论如何,您都必须访问文本。那么你为什么不知道文本会有多长呢?

要确定实际文本的大小,您可以使用 NSSTring 的sizeWithFont:forWidth:lineBreakMode:.

于 2013-07-28T09:42:43.053 回答
0

我已经解决了应用下面的代码并创建属性numberOfTextRows的问题。

(CGFloat)tableView:(UITableView *)t heightForRowAtIndexPath:(NSIndexPath *)indexPath

float height = 45.0f;

    if (indexPath.section == 0 && indexPath.row == 0) {
        CGSize theSize = [self.strResult sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(265.0f, 9999.0f) lineBreakMode:UILineBreakModeWordWrap];
        self.numberOfTextRows = round(theSize.height / 12);
        if ((indexPath.section == height) || (self.numberOfTextRows < 2)) {
            height = 45;
        } else {
            height = theSize.height + 16;
        }
    }

return height;

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

cell.textLabel.numberOfLines = self.numberOfTextRows;

于 2013-07-28T17:15:13.380 回答