UITableView 检测section header的停靠和脱离
Posted
技术标签:
【中文标题】UITableView 检测section header的停靠和脱离【英文标题】:UITableView detect docking and undocking of section header 【发布时间】:2018-01-21 09:58:48 【问题描述】:我有一个 tableView
和一个 viewForHeaderInSection
设置为自定义视图。我想要完成的是在标题部分变得粘滞时将此视图更改为不同的视图。
是否有一个回调可以用来检测 tableView 的部分标题何时粘在顶部?
任何关于这方面的建议都会有很大帮助,谢谢!
编辑: 在此处添加一个模拟以更好地解释我在这里要完成的工作。
我的tableView.tableHeaderView
设置为“横幅 GIF 动画”(图像中的黑色区域)
tableView 的部分标题设置为 UISegmentedControl
,其中包含“Tab 1”和“Tab 2”
这里的“Image 1”和“Image 2”是 tableView 的部分单元格。
到目前为止,当您滚动时,黑色部分(tableview 的标题)会随着屏幕滚动并在您滚动时消失。
表格视图的部分标题(即Tab1/Tab2)在您滚动经过它时会粘在屏幕顶部。
我希望此部分在部分标题粘贴时从 Tab1/Tab2
更改为 countdown timer
(类似于标题的 '10D|4H|3M|03S' 视图),并在它取消停靠时将其更改回选项卡视图。
【问题讨论】:
你让它工作了吗?我想实现类似的功能。 是的,我最终使用了 tableView 的滚动代理scrollViewDidScroll(_ scrollView: UIScrollView)
并检查 tableView.contentOffset.y
是否大于 tableView 的标题高度。如果是,
谢谢..我也搞定了..:)
@PGDev 你能给我提供一个实现吗?我需要实现类似的功能。谢谢。
【参考方案1】:
您可以在 scrollViewDidScroll 中更好地实现这一点,通过简单计算当前 tableView 偏移量和单元格高度,您可以找到特定标题是否位于顶部并将其视图更改为另一个
【讨论】:
我已经设置了scrollViewDidScroll
,并且我能够确定我想要在哪个tableView.contentOffset.y
值上进行切换,但是如何从这里访问tableView 的部分标题?
制作一个全局整数,比如 headerViewSection ,当您发现需要更改背景颜色的单元格的部分索引时,重新加载表格并在 viewForHeader 中为该部分的标题视图设置所需的颜色以上是关于UITableView 检测section header的停靠和脱离的主要内容,如果未能解决你的问题,请参考以下文章
UITableView section header 不固定
UITableView 中的 indexPath 和 indexPath.section
带有 Section、IndexList 和 Search 的 UITableView
在 UITableView 中为 Section Header 添加填充