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