【问题标题】:How to add space between UITableView sections?如何在 UITableView 部分之间添加空间?
【发布时间】:2015-06-04 22:56:14
【问题描述】:

iOS 编辑联系人UITableView 如何在部分之间添加空格,同时仍显示前部分的最后一个单元格的分隔符?

在下面的屏幕截图中,第三部分的第一个单元格突出显示。如何在其上方添加该空白而不将分隔符隐藏在其上方的“添加电话”单元格下方?我尝试添加一个白色的部分标题,但这隐藏了它上面的单元格的分隔符。

【问题讨论】:

  • 你怎么知道它们是分隔符?
  • 我没有,但它们看起来一模一样。我在我的问题中添加了更多细节以澄清我在问什么。
  • 我的意思是,你怎么知道那些灰线不是作为单元格的一部分绘制的?我就是做这个的。我发现这样做和控制线条比使用表格单元格分隔符要容易得多。
  • 我没有。自定义绘制每个分隔符可能是一个更好的主意(以防 Apple 决定更改其分隔符的高度),而不是像我在回答中那样仅绘制其中一个。

标签: ios uitableview uikit


【解决方案1】:

如果您只关心间距,请尝试以下代码:

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

【讨论】:

    【解决方案2】:

    作为一个 hack,我只是在标题视图中添加了一个分隔符。

    // MARK: UITableViewDelegate
    
    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return section == 0 ? UITableViewAutomaticDimension : 24
    }
    
    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        if section == 0 {
            return nil
        } else {
            let view = UIView(frame: CGRectZero)
            view.backgroundColor = UIColor.whiteColor()
            let separator = UIView(frame: CGRect(x: tableView.separatorInset.left, y: 0, width: 0, height: 0.5))
            separator.autoresizingMask = .FlexibleWidth
            separator.backgroundColor = tableView.separatorColor
            view.addSubview(separator)
            return view
        }
    }
    

    如果您有干净简单的解决方案,请回答。

    【讨论】:

      【解决方案3】:

      在 iOS 15 上,您可以在部分标题中添加填充

      if #available(iOS 15.0, *) {
          tableView.sectionHeaderTopPadding = 0
      }
      

      【讨论】: