2

我尝试了下面的代码,但输出始终为 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
4

3 回答 3

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.";
于 2012-08-25T16:27:33.800 回答
0

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

但是,您可能需要用于显示文本而不是单元格本身的任何标签的宽度。

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

于 2012-08-25T16:28:15.563 回答
0

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

于 2013-11-20T12:07:13.153 回答