0

我刚刚遇到了一个奇怪的问题,我有一个具有动态高度的自定义 tableview 单元格。虽然测试这一切似乎工作正常,但现在我正在将真实内容加载到其中似乎存在一些问题。

似乎某些文本不会触发 UILabel 中的新行

正确:http ://dl.dropbox.com/u/274185/Screen%20Shot%202012-05-09%20at%201.15.21%20PM.png 错误:http://dl.dropbox.com/u/274185 /屏幕%20Shot%202012-05-09%20at%201.15.30%20PM.png

正如您在错误示例中看到的那样,文本被推到了第二行,但标签的高度仍然只计算一行。

item.project = @"另一个标题更长的测试项目(管理员/项目管理)";

item.project = @"测试项目(管理员/项目管理)";

我计算高度的方式是这样的:

// when creating the cell
cell.projectLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.projectLabel.numberOfLines = 0;
[cell.projectLabel sizeToFit];

// in heightForRowAtIndexPath()
CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(320.0f, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap];

我尝试更改 lineBreakMode,但这似乎没有多大帮助

编辑:计算文本高度时出现问题,我使用了固定的 320 点,这是不正确的,在使用实际宽度后,高度计算正确。

CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(cell.projectLabel.bounds.size.width, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap];
4

1 回答 1

1

相信sizeToFit 只会缩小视图的大小。您应该将标签的框架设置为足够高以容纳两行,然后调用 sizeToFit。这将在文本只有一行时缩小标签,但在文本为两行时保持其高度。

于 2012-05-09T05:45:13.213 回答