iOS - 如何计算UITableViewCell的默认textLabel的宽度?

时间:2012-08-25 16:21:56

标签: iphone ios uitableview width

我尝试了下面的代码,但输出始终为0.000000:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CellNotification";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.textLabel.text = @"Test Test Test. I am a cell.";

    NSLog(@"%f", cell.textLabel.frame.size.width);

    return cell;
}

我怎么知道默认UITableViewCell的宽度是多少?我需要这些信息,因为我必须在

中设置UITableViewCell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

3 个答案:

答案 0 :(得分:0)

您在上面使用的NSLog要求单元格中textLabel的宽度,而不是实际单元格。

NSLog(@"%f",cell.frame.size.width);

此外,如果您不使用分组表格样式,则单元格宽度应返回与表格宽度相同的值。

编辑:我不确定这是不是问题,但是如果你问如何设置细胞的宽度,你不必这样做。这是为你处理的。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"%@",NSStringFromCGRect(cell.textLabel.frame));
}

编辑2:

尝试更改此内容:

if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.textLabel.text = @"Test Test Test. I am a cell.";

对此:

if (cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = @"Test Test Test. I am a cell.";

答案 1 :(得分:0)

单元格的宽度将是表格的宽度,除非您的表格已分组,在这种情况下它会略小一些。

但是,您可能希望使用任何标签的宽度来显示文本而不是单元格本身。

进一步的警告是,在创建任何单元格之前,会为表中的每一行调用heightForRow...方法,因此您可能必须使用已知值。

答案 2 :(得分:0)

我认为你应该测试你的textLabel宽度:      - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath