如何在iOS中获取UITableViewCell中默认文本标签的大小?

如何在iOS中获取UITableViewCell中默认文本标签的大小?,ios,uitableview,Ios,Uitableview,我尝试在UITableViewCell的默认textLabel下面添加一个辅助(自定义)标签 我想正确设置框架,它应该位于文本标签下方。但是,所有值都返回0,因此我无法正确准备自定义视图的框架 在 -(UITableView单元格*)tableView:(UITableView*)tableView单元格for行索引路径:(nsindepath*)indepath NSLog(@“%f,%f,%f,%f”,cell.textlab.frame.origin.x,cell.textlab.fram

我尝试在UITableViewCell的默认textLabel下面添加一个辅助(自定义)标签

我想正确设置框架,它应该位于文本标签下方。但是,所有值都返回0,因此我无法正确准备自定义视图的框架

-(UITableView单元格*)tableView:(UITableView*)tableView单元格for行索引路径:(nsindepath*)indepath

NSLog(@“%f,%f,%f,%f”,cell.textlab.frame.origin.x,cell.textlab.frame.origin.y,cell.textlab.frame.size.height,cell.textlab.frame.size.width)

印刷品

0.000000,0.000000,0.000000,0.000000


如何为自定义二级描述视图获取正确的x和y?(我知道UITableViewCell有一个类似于此的模板,但我不想使用详细视图模板)

默认大小为[cell labelsize=15 0 43.5 270]

当cell=nil时,您将无法获得textLabel的大小。将tableview向上拖动,然后检查日志。您将找到这些值

但是如果你想要两个标签,那么使用这个代码。很简单

    - (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;
    }

快乐编码…

您很可能无法在加载后立即获得单元格中的大小。最初
cellforrowatinexpath:
将为您提供零值。您必须滚动出视图或调用
[tableView reload]
方法。这将使用新值再次调用
cellforrowatinexpath:
。框架的起点将不同,但尺寸应相同。我使用此技术获取detailTextLabel.frame的大小。以下是我的示例以及我是如何获得尺寸的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ......
    NSLog(@“detailCell frame is %@”, NSStringFromCGRect(cell.detailTextLabel.frame));
    ......
}

祝你好运

在分配和设置“单元格”后,我尝试获取textLabel的大小。它没有给出尺寸。。所以你的意思是我必须完全放弃使用默认的textLabel,并用一个自定义的主标签替换它。对吧?没错,我做过很多项目。这是做定制事情的好方法。因为使用默认的文本标签有时会让事情变得更糟。比如把一个标签包在另一个标签上等等。。如果答案对您有帮助,请接受。默认UITableViewCell的文本标签的默认大小是正确的,但仅适用于iOS 7。在iOS 6上,textLabel的宽度是280,origin.x是15。对于iOS 7和更早版本,您需要采取预防措施。在默认cell.textlabel中添加两个自定义标签