【问题标题】:UITableView separator lines disappear between cells on scrollUITableView 分隔线在滚动的单元格之间消失
【发布时间】:2023-04-10 22:37:01
【问题描述】:
问题:表格视图中单元格之间的分隔符仅在视图加载时显示的那些单元格中显示,并且仅在加载时显示。当 tableview 向下滚动时,滚动到视图中的单元格之间不显示分隔符,然后当 tableview 向上滚动时,初始单元格不显示分隔符。
详细信息:我有一个 UITableView,我正在向其中添加标准 UITableViewCells。这些单元格是使用 initWithFrame 创建的,框架高度 = 90px。我正在将一个从笔尖创建的自定义视图添加到此单元格的视图中,高度 = 90px。单元格高度在 tableView:heightForRowAtIndexPath: 中指定为 90px。
有没有人经历过这种行为?
【问题讨论】:
标签:
uitableview
separator
【解决方案1】:
我觉得解决这个问题很简单......
我将单元格的高度设置为 91 像素,并且分隔线在滚动时显示为应有的样子。
【解决方案2】:
我无法使用 Douglas 的解决方案,因为我的表格有大量单元格,并且在旧手机上几乎无法使用。重复使用单元是提高性能的关键。
但是,我设法使用透明分隔符解决了这个问题,并在单元格的 contentView 中添加了我自己的分隔符,如下所示:
yourTable.separatorColor = [UIColor clearColor];
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2);
【解决方案3】:
我遇到了同样的问题,但我使用了不同的解决方案。
我的分隔符消失了,因为我正在使用以下方式清除我的单元格:
for (UIView *eachView in self.subviews) {
[eachView removeFromSuperview];
}
这也删除了分隔视图!
相反,我在将每个海关视图(三个标签)添加到子视图之前为其分配了一个标签:
tempFirstNameLabel.tag = 100;
self.firstNameLabel = tempFirstNameLabel;
[self addSubview:self.firstNameLabel];
然后当我清除单元格时,我只是删除了那些视图:
for (int i = 100; i<103; i++) {
UIView *eachView = [self viewWithTag:i];
[eachView removeFromSuperview];
}
希望这会有所帮助!
这也避免了@Douglas Smith 的解决方案带来的内存管理问题。
【解决方案4】:
你应该设置无分隔符,然后再设置单行
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// it is a bug in iOS 7
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;