[英]iOS custom table view cell label resizing corruption
我正在为客户端编写 iOS 应用程序,主视图是表格视图,我用文本填充单元格,就像大多数 iOS twitter 客户端一样。
我创建了一个带有 3 个标签的自定义单元格视图,并用文本填充这些标签。 其中一个标签需要根据文本量(最多 140 个字符)自动调整大小。
这工作正常,直到我向上/向下滚动列表时文本延伸到单个完整行(如 label 已扩展)或仅占用部分空间,因此它最终更深并溢出到其他标签中(我确实有根据另一个类似的 SO 问题启用了“剪辑子视图”)
因此,当第一次加载表及其数据时,屏幕如下所示:
滚动前 http://lloydsparkes.co.uk/files/iOS-BeforeScrolling.png
经过一点滚动后,它看起来像:
滚动后 http://lloydsparkes.co.uk/files/iOS-AfterScrolling.png
因此,似乎 label 在滚动期间正在调整大小(可能是由于重复使用了相同的单元格?)并且没有将大小调整回正确的大小。
我填充单元格的代码是:
-(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
object 的框架设置回原始大小(NIB 文件中设置的值)
[label setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)];
[label sizeToFit];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.