繁体   English   中英

iOS 自定义表格视图单元格 label 调整大小损坏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM