我花了几个小时试图解决这个问题,但没有成功。
我试图以根据数据动态调整高度的方式在 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;
}
先感谢您。