Iphone iOS-动态标签大小未正确返回

Iphone iOS-动态标签大小未正确返回,iphone,ios,uitableview,ios5,Iphone,Ios,Uitableview,Ios5,我花了几个小时试图解决这个问题,但没有成功 我试图在UITableViewCell上显示数据,以根据数据动态调整高度 现在,这些应用程序似乎可以很好地处理大量数据,但对于一些数据,标签无法正确调整。如您所见,已使用constrainedToSize功能返回给定文本的高度 这个高度被错误地给出了很多次。例如当标签文本为“高脉冲白色,在滑翔道上-稳定白色,略低于滑翔坡-稳定红色,低脉冲红色”时,返回的高度为63,此时应大于此值 另一个例子: “高脉冲白色,在航道上和滑翔道上-稳定白色,在航道上但在滑

我花了几个小时试图解决这个问题,但没有成功

我试图在UITableViewCell上显示数据,以根据数据动态调整高度

现在,这些应用程序似乎可以很好地处理大量数据,但对于一些数据,标签无法正确调整。如您所见,已使用constrainedToSize功能返回给定文本的高度

这个高度被错误地给出了很多次。例如当标签文本为“高脉冲白色,在滑翔道上-稳定白色,略低于滑翔坡-稳定红色,低脉冲红色”时,返回的高度为63,此时应大于此值

另一个例子: “高脉冲白色,在航道上和滑翔道上-稳定白色,在航道上但在滑翔道上-脉冲白色和红色;低脉冲红色”返回总标签高度为84,但它应该大于84,因为标签根本不适合我的tableview

我注意到的一件奇怪的事情是,不正常的细胞通常大小为63或84。。。我还没有见过更多这样的尺码,但如果这能帮上忙的话

守则:

if (tableView.tag ==1) {
    NSString *cellText;
    if ([multipleAddressSplit count]==0) {

        if (indexPath.row ==0) {

            cellText =[OptionText1 objectAtIndex:i];
        }
        if (indexPath.row == 1) {

            cellText =[OptionText2 objectAtIndex:i];

        }
        if (indexPath.row == 2) {

            cellText =[OptionText3 objectAtIndex:i];

        }
    }


    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
    CGSize constraintSize = CGSizeMake(OptionTable.frame.size.width , MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    NSLog(@"========start=========");
    NSLog(@"Celltext is: %@",cellText);
    NSLog(@"Method Label %f",(labelSize.height));
    NSLog(@" 1/3rd %f",(OptionTable.frame.size.height/3-15));
    NSLog(@"=========stop========");


    if ((labelSize.height)<((OptionTable.frame.size.height/3)-15)) {
        NSLog(@" Returned 1/3rd is: %f",(OptionTable.frame.size.height/3));

        return (OptionTable.frame.size.height/3);
    }

    else {
        return labelSize.height + 15;

    }
if(tableView.tag==1){
NSString*单元格文本;
如果([MultipleReadDressSplit count]==0){
if(indexPath.row==0){
cellText=[OptionText1对象索引:i];
}
if(indexath.row==1){
cellText=[OptionText2对象索引:i];
}
if(indexPath.row==2){
cellText=[OptionText3对象索引:i];
}
}
UIFont*cellFont=[UIFont fontWithName:@“Helvetica”大小:17.0];
CGSize constraintSize=CGSizeMake(OptionTable.frame.size.width,MAXFLOAT);
CGSize labelSize=[cellText sizeWithFont:cellFont constrainedToSize:ConstrainetSize lineBreakMode:UILineBreakModeWordWrap];
NSLog(@“==================================”);
NSLog(@“Celltext为:%@”,Celltext);
NSLog(@“方法标签%f”,(labelSize.height));
NSLog(@“1/3%f”,(可选表格、框架、尺寸、高度/3-15));
NSLog(@“==================================”);
如果在委托方法中((labelSize.height)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *strIden = [NSString stringWithFormat:@"cell%d",indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strIden];
         if(cell==nil){
                cell = [[[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleValue1

                reuseIdentifier:strIden] autorelease];
         }
}
在委托方法中创建不同的单元格ID。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *strIden = [NSString stringWithFormat:@"cell%d",indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strIden];
         if(cell==nil){
                cell = [[[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleValue1

                reuseIdentifier:strIden] autorelease];
         }
}

制作不同的单元格ID。

解决方案非常简单和琐碎

我把标签的宽度取为单元格的宽度,而文本标签的实际宽度是每边10个像素,从高度减去20个像素就解决了这个问题


谢谢大家的回答。

解决这个问题的方法非常简单和琐碎

我把标签的宽度取为单元格的宽度,而文本标签的实际宽度是每边10个像素,从高度减去20个像素就解决了这个问题


谢谢大家的回答。

您确定是您的标签太短,而不是实际的单元格吗?如果标签高84点,而单元格只有50点(例如)这看起来很奇怪。你是如何给出单元格高度的?我想你不是因为你不能像这样动态地更改单元格的高度。你需要提前计算所有单元格高度(使用委托方法heightForCellAt…)您是想动态调整标签还是整个单元格的大小?表创建后标签中的数据会发生变化,还是创建后的数据保持静态?数据保持静态,我提供的代码来自“HeightForRowatineXpath”委托方法本身。我正在计算手之前的高度,即使在那时,我也面临着这个错误。很多时候,关于相似数量的数据,在我打印它们的CGSIZE时显示出很大的差异。我被困在这里。从过去这么多天以来,我一直试图解决这个问题。你确定是你的标签太短,而不是实际的c吗ells?如果标签的高度为84点,而单元格的高度只有50点(例如),则看起来会很奇怪。您是如何给出单元格高度的?我假设您不是,因为您无法像这样动态更改单元格的高度。您需要提前计算所有单元格高度(使用委托方法heightForCellAt…)您是想动态调整标签还是整个单元格的大小?表创建后标签中的数据会发生变化,还是创建后的数据保持静态?数据保持静态,我提供的代码来自“HeightForRowatineXpath”委托方法本身。我正在计算手之前的高度,即使在那时,我也面临着这个错误。很多时候,关于相似数量的数据,在我打印它们的CGSIZE时显示出很大的差异。我被困在这里。从过去这么多天来一直试图解决这个问题!没有帮助。我仍然得到混乱的文本。问题是,label大小的计算不正确。如果我找到了解决方案,问题肯定会消失。没有帮助。我仍然会收到混乱的文本。问题是,标签大小的计算不正确。如果我找到了解决方案,问题肯定会消失。