我有一个自定义UITableViewCell
子类,这已经在Interface Builder应用了自动布局的限制。 该小区有多个视图,包括一个UITextField
。
相关地,所述的尺寸UITextField
受到约束,使得有它和下一个视图之间默认水平间距。
小区被实例化类似如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ProgressCell";
ProgressCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath]
cell.textField.text = @"Some string that is different for each cell";
return cell;
}
当电池第一次出现,该UITextField
超支正确的框架,并出现背后UIView
其右侧。 然而,当我滚动池脱屏,暂停,然后滚动回,文本被正确地截断。
一个例子如下所示(在第二编辑)。
我已经打过电话[cell setNeedsLayout]
和[cell setNeedsDisplay]
在细胞cellForRowAtIndexPath
,以及延迟一段时间后执行它们。 无论是有效的。
什么是滚动关闭屏幕这样做导致细胞正常显示,我怎么可以复制这个或解决潜在的问题?
编辑:
调用
[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
为了重新加载单元,会出现以使布局出现正确的第一次。
然而,现在打破 (偶尔)上滚动(即滚动备份时,布局限制,现在无法正常使用)。
调用[cell setNeedsLayout]
中cellForRowAtIndexPath
似乎没有解决这个问题。
EDIT2:
顶部电池,如图所示这里 ,似乎正确(如底部电池一样),直到我向下滚动屏幕。 它从此失踪。
这反映了一个问题,因为第一次编辑的 - 这是第二渲染,这是问题(让我觉得它可能是与重用细胞?)