我花了好几个小时试图解决这个问题,但没有成功。
我试图在UITableViewCell上显示数据,以便根据数据动态调整高度。
现在,应用程序似乎可以很好地处理大量数据,但是对于某些数据,标签无法正常调整。如您所见,已使用constrainedToSize功能返回给定文本的高度。
很多次都错误地给出了这个高度。例如。当标签文字为“高脉冲白色,在下滑道上 - 稳定的白色,略低于下滑的斜坡稳定的红色,低脉冲的红色。”当它应该大于那个时,返回的高度是63。
另一个例子: “高脉冲白色,在航道上和下滑道上 - 稳定的白色,偏离航线但在下滑道上 - 脉冲白色和红色;低脉冲红色”使标签高度返回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;
}
提前谢谢。
答案 0 :(得分:1)
对此的解决方案非常简单而且微不足道。
我将LabelSize的宽度等于单元格的宽度,而textLabel实际上距离每边约10个像素。从高度减去20个像素修复了问题。
感谢大家的答案。
答案 1 :(得分: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。