头视图,多视图左右划,上划分类视图可悬停,多视图可加上拉下拉刷新数据

国庆三天班要结束啦,,期间写了一个控件。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

        }

 

    }