【问题标题】:Why are separator insets not being respected for the first and last cell in a grouped section?为什么分组部分中的第一个和最后一个单元格不考虑分隔符插入?
【发布时间】:2020-05-15 08:23:27
【问题描述】:

我希望能够将表格视图中的所有分隔符插入一定数量。此表视图需要每个部分的自定义标题。有关所需插图,请参见下图:

我的故事板已设置好,因此我有一个 UIViewController,其中包含一个容器 UIView,而该容器又具有一个 UITableView 的嵌入 segue。我的表格视图指定了一个原型单元格,我在情节提要中设置了一个分组样式,默认分隔符,自动插入。

在情节提要中的表格视图单元格中,左侧有一个自定义分隔符插入 26。

在我的表格视图控制器中,我实现了以下两种方法:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ItemHeader") as! TableSectionHeaderViewCell
    header.title.text = "My Custom Date Header"
    return header
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 60.0
}

在一个单独的文件中,我将 UITableViewHeaderFooterView 子类化为只设置字体、文本颜色和一些约束。

现在,如果我在表格视图级别的故事板上设置了一个自定义分隔符插图,从左侧开始 26 个插图,无论是从单元边缘还是从自动插图,我的每个标题下方出现的分隔符都没有任何变化。同样,如果我在表格视图控制器的viewDidLoad 方法中以编程方式设置这些值,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.rowHeight = UITableView.automaticDimension
    tableView.register(TableSectionHeaderViewCell.self, forHeaderFooterViewReuseIdentifier: "ItemHeader")

    tableView.separatorInset = UIEdgeInsets(top: 0, left: 26, bottom: 0, right: 0)
    tableView.separatorStyle = .singleLine
    tableView.separatorInsetReference = .fromCellEdges
}

分隔符插入没有任何变化,即使使用.fromAutomaticInsets 选项作为分隔符插入引用也是如此。这是我实际看到的:

似乎一个部分中的第一个和最后一个单元格实际上不尊重分隔符插入。我最初认为这是一个与每个分组部分都有一个标题有关的问题,但最后一个单元格上没有标题的分隔符似乎表明不是这样。我怎样才能使这些分隔符全部插入 26pts?感谢您提供的任何见解。

【问题讨论】:

    标签: ios swift storyboard ios13


    【解决方案1】:

    然后检查这个帖子,我认为它会有所帮助:

    Grouped UITableview remove outer separator line

    我可以看到他们删除了默认分隔符(使用清除颜色)并为分隔符自己放置了一个自定义视图。

    我可以建议的另一个选项是不要使用组样式表视图,使用普通的并自己处理。

    【讨论】:

    • 感谢您的建议;我确实已经遇到过这篇文章,看起来他们正在尝试删除分隔符,这不是我想要的。我希望能够更改这些分隔符的插图,而到目前为止我尝试过的每件事都不起作用。不幸的是,他们没有演示如何在该线程中操作这些分隔符。只是如何摆脱它们。
    • 我可以看到它删除了它们并为分隔符放置了一个自定义视图。我可以建议的另一个选项是不要使用组样式表视图,使用普通的。
    • 我开始探索一个简单的表格视图作为一个选项。不幸的是,您必须使用任何一种方法添加自己的分隔符,而没有自定义选项,这似乎是不可避免的。我强烈反对要求您了解底层视图结构的方法,因为这可能会发生变化,因此至少使分隔符不可见并使用自定义分隔符是更好的选择。
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多