何时捕获UILabel的高度?

时间:2011-04-15 18:27:53

标签: iphone cocoa-touch ios uitableview

我正在尝试在实例变量中捕获UILabel的高度。我使用的是默认样式UITableViewCellStyleValue2

截至目前,我尝试在

中创建单元格时捕获高度
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

代码(为了简洁,跳过了deque'd的东西):

UITableViewCell *testCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"myCell"] autorelease];

testCell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
testCell.detailTextLabel.numberOfLines = 10;

testCell.selectionStyle = UITableViewCellSelectionStyleNone;

testCell.textLabel.text = @"LabelName";
testCell.detailTextLabel.text = [object valueForKey:@"key"];
[testCell.detailTextLabel sizeToFit];  //still says 0.00 :-(

labelHeight = testCell.detailTextLabel.bounds.size.height;
NSLog(@"testCell height is %f", testCell.detailTextLabel.bounds.size.height);  // equals 0.00
NSLog(@"cellFrame is %f", testCell.frame); //also says 0.00
return cell;

NSLog表示身高为0.00。

那么,抓住标签高度的好地方在哪里?或者,我错过了什么?我认为在分配detailTextLabel时会设置[someObject valueForKey:theKey]边界。谢谢!

编辑:完整代码。

2 个答案:

答案 0 :(得分:1)

请在cellForRowAtIndexPath中发布所有代码。 我怀疑你没有给detailTextLabel一个非零的框架(或边界)。 您还可以NSLog the cell.frame来查看它的宽度和高度。

答案 1 :(得分:0)

在分配[cell.detailTextLabel sizeToFit]之前,您是否尝试过调用labelHeight?我的理解是标签将在那个时候调整大小,你应该得到一个非零值(假设文本不是空的。)