带有标题部分的插入分组 UITableView
Posted
技术标签:
【中文标题】带有标题部分的插入分组 UITableView【英文标题】:Inset Grouped UITableView with Header Section 【发布时间】:2020-08-05 08:53:37 【问题描述】:我使用了 UITableView
和两个原型单元格和 Inset Grouped 样式
没有viewForHeaderInSection
输出就可以了
添加viewForHeaderInSection
后输出会是这样的
预期输出
这是我的代码
extension DashboardVC:UITableViewDelegate, UITableViewDataSource
func numberOfSections(in tableView: UITableView) -> Int
return 4
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 4
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
return 45
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
return UITableView.automaticDimension
func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat
return 70
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
let headerCell = tableView.dequeueReusableCell(withIdentifier: "TblHeaderCell") as! TblHeaderCell
return headerCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "TblSectionCell", for: indexPath) as! TblSectionCell
return cell
【问题讨论】:
【参考方案1】:首先,Inset Grouped tableView 有额外的对齐属性...
如果您使用默认单元格并简单地设置titleForHeaderInSection
,您会看到部分标题中的文本与单元格中的文本对齐。
此外,Inset Grouped 将行部分的角变圆 -- 它不包括部分标题。
以下是使用普通 UIView
作为节标题视图的外观:
放大一点:
为了获得您想要的视觉输出,我认为您需要将“标题单元格”用作该部分的第一行,并将“部分单元格”用作其余行:
我猜您的部分标题中的“向下箭头/V 形”表示您要展开/折叠部分?如果是这样,您需要重构代码以在该部分折叠时仅显示第一行。
另一种选择是不使用Inset Grouped,而是自定义单元格以将节标题的顶角和节中最后一个单元格的底角倒圆...或圆角部分折叠时标题的所有 4 个角。
【讨论】:
我已经知道如何手动完成我只想知道如何直接使用 Inset Grouped 属性 @NikunjKumbhani - 这个解决方案是使用Inset Grouped。我的观点是,你不能使用节标题来设计你的设计,因为 Inset Grouped 会圆化节的角并将标题保留为非圆角矩形。以上是关于带有标题部分的插入分组 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 是不是支持带有矩形(非圆形)部分的分组样式?
带有 UITableView ui 故障的 UISearchController