国庆三天班要结束啦,,期间写了一个控件。tablview 带头视图,,带分页,头视图滑上去,,分页标题可悬停功能
思路: 最底层是tableview 带头视图,悬停部分是tableview 的分区view,下面是一个cell,cell的高度是屏幕高减去悬停view的高
cell中添加UIPageViewController,,所有分页都是UIviewcontroller 每个分页视图中都可以添加下拉和上拉更新数据
核心内容
1.对底部tableview 添加手势穿透,,可以同时响应分页中UIviewcontroller中tableview 和 底部tableview的同时滑动
class NUITableView: UITableView,UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
创建底部tableview 使用NUITableView
2. 设置分页中UIviewcontroller中tableview 何时contentoffset.y = 0
底部tableview:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
SecondTool.instance.SecondScrollH = scrollView.contentOffset.y
if SecondTool.instance.pageScrollH > 0 { // 当头视图划出屏幕时,也是分类UIviewcontroller中的tableview 向上划出屏幕时
self.tableView.contentOffset.y = headerViewH
}
}
分类UIviewcontroller中的tableview:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
SecondTool.instance.pageScrollH = scrollView.contentOffset.y
// 当底部tableview在头视图可见范围内时,,设置tableview的contentOffset.y = 0
if SecondTool.instance.SecondScrollH < self.headerViewH && SecondTool.instance.SecondScrollH > 0{
self.tableView.contentOffset.y = 0
}
}