23

在 iOS 15 中,UITableView在节标题和第一个单元格之间添加分隔符:

在此处输入图像描述

如何隐藏或删除该分隔符?

几点注意事项:

  1. 标头是从tableView(_:viewForHeaderInSection:).
  2. 查看视图调试器时,我可以看到额外的分隔符实际上是第一个单元格的子视图,它现在具有顶部和底部分隔符。
  3. 除了设置tableView.separatorInset更改单元格分隔符的插入外,这是一个完全标准的表格视图,没有自定义。
4

7 回答 7

12

选项1:也许通过使用UITableViewCellSeparatorStyleNone表格视图并将单元格的系统背景视图替换为仅具有底线的自定义视图?

选项 2:使用来自https://developer.apple.com/forums/thread/684706的提示

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 // only Xcode 13+ needs and can compile this
    if (@available(iOS 15.0, *)) {
        [self.tableview setSectionHeaderTopPadding:0.0f];
    }
#endif
}
于 2021-08-25T15:52:56.147 回答
10

我遇到了类似的问题,但这是由于表头视图突然在 iOS 15 上显示为分隔符。唯一对我有用的是:

if #available(iOS 15.0, *)
{
    tableView.tableHeaderView = UIView()
}
于 2021-09-15T12:56:19.007 回答
1

我能够用这段代码修复它。

if (@available(iOS 15.0, *)) {
    self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
    [self.tableView setSectionHeaderTopPadding:0.0f];
}
于 2021-10-08T22:34:31.667 回答
0

我相信tableView.separatorStyle = .none应该做的伎俩。

于 2021-09-08T13:19:06.343 回答
0

在我的情况下,我想使用本机部分标题和不同于 0 的顶部填充,所以如果你想删除每个部分上额外的顶部和底部分隔符,这应该可以工作:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Dequeue cell and set it up ...
    if indexPath.row == 0 {
        let separator = cell.subviews.filter({
            $0.frame.minY == 0 && $0 !== cell.contentView
        }).first
        separator?.isHidden = true
        cell.separatorInset.left = 0 // Or whatever desired inset
    }
    if indexPath.row + 1 == dataSource[indexPath.section].count {
        cell.separatorInset.left = cell.bounds.width
    } else {
        cell.separatorInset.left = 0 // Or whatever desired inset
    }
    return cell
}
于 2021-09-21T19:36:12.577 回答
0

iOS 15、斯威夫特 5

要删除节标题和第一个单元格之间的线,您应该在配置 UITableView 时将 sectionHeaderTopPadding 设置为零。

    if #available(iOS 15.0, *) {
        tableView.sectionHeaderTopPadding = 0.0
    }
于 2022-02-28T13:50:38.217 回答
-1

您的问题可以有两种解决方案/

  1. 一个是

    self.tableView.separatorColor = self.tableView.backgroundColor

这是一个技巧解决方案,它使外线“消失”并保持分隔线可见

  1. 第二个是

如果不使用分组,请将您的tableview类型从分组更改为普通。

于 2021-08-26T07:39:46.830 回答