gpt4 book ai didi

iphone - 出列的 UITableViewCell 在滚动之前布局不正确(使用自动布局)

转载 作者:IT王子 更新时间:2023-10-29 08:04:59 25 4
gpt4 key购买 nike

我有一个自定义的 UITableViewCell 子类,它在 Interface Builder 中应用了自动布局约束。该单元格包含多个 View ,包括一个 UITextField

相关地,UITextField 的大小受到限制,因此它与下一个 View 之间存在默认的水平间距。

单元格实例化如下:

- (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 后面的右侧。但是,当我将单元格滚动到屏幕外、暂停,然后向后滚动时,文本会被正确截断。

下面显示了一个示例(在第二次编辑时)。

我尝试为 cellForRowAtIndexPath 中的单元格调用 [cell setNeedsLayout][cell setNeedsDisplay],并在延迟。两者都无效。

什么是滚动屏幕导致单元格正确显示,我该如何复制它或解决潜在问题?

编辑:

打电话

[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

为了重新加载单元格,似乎导致布局第一次正确显示。

但是,它现在中断(偶尔)滚动(即,当向上滚动时,布局约束现在没有正确应用)。

cellForRowAtIndexPath 中调用 [cell setNeedsLayout] 似乎无法解决此问题。

编辑2:

顶部单元格,如图here , 显示正确(就像底部单元格一样),直到我向下滚动屏幕。它从此消失了。

这反射(reflect)了第一次编辑时的问题 - 这是第二次渲染的问题(让我觉得它可能与重用单元格有关?)

最佳答案

如果您在 UITableViewCell 子类 textLabeldefaultTextLabel 上命名属性,则 IB 将忽略您指定的约束并使用默认值,没有发出警告。

即使在 IB 中使用自定义样式设计的单元格也是如此,它们没有可见的 textLabeldetailTextLabel 属性。

如果在 UITableViewCell 子类上添加类型为 UIImageView 的属性并将其命名为 imageView,也会发生这种情况。

关于iphone - 出列的 UITableViewCell 在滚动之前布局不正确(使用自动布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14995573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com