我尝试在UITableViewCell的默认textLabel下面添加一个辅助(自定义)标签。
我想正确设置框架,它应该真正低于textLabel。但是,所有值都返回0,因此我无法正确准备自定义视图的帧。
在
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSLog(@"%f, %f, %f, %f", cell.textLabel.frame.origin.x,cell.textLabel.frame.origin.y,cell.textLabel.frame.size.height,cell.textLabel.frame.size.width);
打印
0.000000, 0.000000, 0.000000, 0.000000
如何为自定义辅助描述视图获取正确的x和y? (我知道UITableViewCell有一个类似于这个的模板,但我不想使用详细视图模板)
答案 0 :(得分:1)
加载后,您很可能无法立即获得单元格中的尺寸。最初cellForRowAtIndexPath:
将为您提供零值。您必须滚出视图或以某种方式调用[tableView reload]
方法。这将使用新值再次调用cellForRowAtIndexPath:
。框架的起源会有所不同,但尺寸应该相同。我使用这种技术来获取detailTextLabel.frame的大小。这是我的例子以及我如何获得尺寸:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
......
NSLog(@“detailCell frame is %@”, NSStringFromCGRect(cell.detailTextLabel.frame));
......
}
祝你好运
答案 1 :(得分:0)
默认大小为 [cell labelsize = 15 0 43.5 270]
当cell = nil时,你不会得到textLabel的大小。拖动你的桌面上方和然后检查日志。你会发现这些价值观。
但如果您想要两个标签,请使用此代码。这很简单。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell =[ tableView dequeueReusableCellWithIdentifier:@"cell"];
UILabel * invoiceTitle;
UILabel * projectTitle;
if(cell==nil)
{
cell=[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]autorelease];
invoiceTitle = [[UILabel alloc]initWithFrame:CGRectMake(14, 0, cell.contentView.frame.size.width, cell.contentView.frame.size.height/2)];
[invoiceTitle setTag:111];
[cell.contentView addSubview:invoiceTitle];
[invoiceTitle release];
projectTitle = [[UILabel alloc]initWithFrame:CGRectMake(14, cell.contentView.frame.size.height/2 + 1, cell.contentView.frame.size.width - cell.contentView.frame.size.height/2];
[projectTitle setTag:222];
[cell.contentView addSubview:projectTitle];
[projectTitle release];
}
else
{
invoiceTitle = (UILabel *)[cell.contentView viewWithTag:111];
projectTitle = (UILabel *)[cell.contentView viewWithTag:222];
}
[projectTitle setText:LOCAL(@"Title1")];
[invoiceTitle setText:@"Title2"];
return cell;
}
快乐的编码......