为什么分组部分中的第一个和最后一个单元格不考虑分隔符插图?
Why are separator insets not being respected for the first and last cell in a grouped section?
我希望能够将 table 视图中的所有分隔符插入一定量。此 table 视图的每个部分都需要自定义 header。请参阅下图了解所需的插图:
我的故事板已设置好,因此我有一个 UIViewController,其中包含一个容器 UIView,而该容器又具有 UI 的嵌入转场Table查看。我的 table 视图指定了一个原型单元格,我在故事板中设置了分组样式、默认分隔符和自动插入。
在情节提要中的 Table View Cell 上,我在左侧有一个自定义分隔符插图 26。
在我的 table 视图控制器中,我实现了以下两个方法:
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 子类化为仅设置字体、文本颜色和一些约束。
现在,如果我在 table 视图级别的情节提要中设置自定义分隔符插入,从左侧插入 26 个,无论是从单元格边缘还是从自动插入,出现在每个下方的分隔符都不会发生任何变化我的 headers。同样,如果我在 table 视图控制器的 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
选项也是如此。这是我实际看到的:
似乎一个部分中的第一个和最后一个单元格实际上没有遵守分隔符插入。我最初认为这是一个与每个分组部分都有一个 header 有关的问题,但最后一个单元格上的分隔符下面没有 header 似乎另有说明。我怎样才能使这些分隔符全部插入 26pts?感谢您提供的任何见解。
然后检查这个线程,我认为它会有所帮助:
我可以看到他们删除了默认分隔符(使用透明颜色)并为分隔符本身放置了一个自定义视图。
我可以建议的另一个选项是不要使用组样式 Table 视图,使用普通样式并自己处理。
我希望能够将 table 视图中的所有分隔符插入一定量。此 table 视图的每个部分都需要自定义 header。请参阅下图了解所需的插图:
我的故事板已设置好,因此我有一个 UIViewController,其中包含一个容器 UIView,而该容器又具有 UI 的嵌入转场Table查看。我的 table 视图指定了一个原型单元格,我在故事板中设置了分组样式、默认分隔符和自动插入。
在情节提要中的 Table View Cell 上,我在左侧有一个自定义分隔符插图 26。
在我的 table 视图控制器中,我实现了以下两个方法:
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 子类化为仅设置字体、文本颜色和一些约束。
现在,如果我在 table 视图级别的情节提要中设置自定义分隔符插入,从左侧插入 26 个,无论是从单元格边缘还是从自动插入,出现在每个下方的分隔符都不会发生任何变化我的 headers。同样,如果我在 table 视图控制器的 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
选项也是如此。这是我实际看到的:
似乎一个部分中的第一个和最后一个单元格实际上没有遵守分隔符插入。我最初认为这是一个与每个分组部分都有一个 header 有关的问题,但最后一个单元格上的分隔符下面没有 header 似乎另有说明。我怎样才能使这些分隔符全部插入 26pts?感谢您提供的任何见解。
然后检查这个线程,我认为它会有所帮助:
我可以看到他们删除了默认分隔符(使用透明颜色)并为分隔符本身放置了一个自定义视图。
我可以建议的另一个选项是不要使用组样式 Table 视图,使用普通样式并自己处理。