1

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

我试图以根据数据动态调整高度的方式在 UITableViewCell 上显示数据。

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

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

另一个例子:“High - pulsing white, on course and on glidepath - stable white, off course but on glidepath - 脉冲白色和红色;低 - 脉冲红色”返回总标签高度为 84,当它应该大于标签根本不适合我的桌面视图。

我注意到的一件奇怪的事情是,不正常的单元格通常有 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;

    }

先感谢您。

4

2 回答 2

1

解决这个问题非常简单和微不足道。

我将 LabelSize 的宽度设为单元格的宽度,而实际的 textLabel 距离每边大约 10 个像素。从高度减去 20 像素解决了这个问题。

谢谢大家的回答。

于 2012-08-07T17:47:53.443 回答
0

在委托方法中

- (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。

于 2012-06-12T05:55:58.813 回答