小程序开发|小程序制作|小程序开发网

搜索

scrollview、tableView嵌套解决方案

2022-9-2 08:07| 发布者: 风琴来| 查看: 209| 评论: 4

摘要: 在网上找了很多,没有喜欢的方案。也参考了众多设计,做了一款自认为比较简洁、完美的方案:大致思路:外层放置scrollview作为容器,容器内上部分topView,下部分tableView。当tableView滚动时,如果topView还在展示

在网上找了很多,没有喜欢的方案。也参考了众多设计,做了一款自认为比较简洁、完美的方案:

大致思路:外层放置scrollview作为容器,容器内上部分topView,下部分tableView。当tableView滚动时,如果topView还在展示区域,就设置topView的y坐标,让topView跟随同步上移。

(注意:如果不设置tableView的headerView,tableView、和topView都会同时上移不是我想要的效果,所以设置tableView的headerView高度包括topView的高度,达到了完美的效果,具体实现看demo)

效果预览:

核心代码就是在父视图、子试图的滚动判断

//父视图滚动的回调,用于横向滚动判断

 CGRectGetHeight(self.topView.frame) - kItemheight) {            placeholderOffset = CGRectGetHeight(self.topView.frame) - kItemheight;        }else {            placeholderOffset = self.firstTableView.contentOffset.y;        }        [self.secondTableView setContentOffset:CGPointMake(0, placeholderOffset) animated:NO];    }else {        if (self.secondTableView.contentOffset.y > CGRectGetHeight(self.topView.frame) - kItemheight) {            placeholderOffset = CGRectGetHeight(self.topView.frame) - kItemheight;        }else {            placeholderOffset = self.secondTableView.contentOffset.y;        }        [self.firstTableView setContentOffset:CGPointMake(0, placeholderOffset) animated:NO];    }}


//子视图滚动的回调,用于竖直方向上滚动判断

= 0 && (offsetY <= placeHolderHeight)) {        y = -offsetY;    } else if (offsetY > placeHolderHeight) {        y = -placeHolderHeight;    } else if (offsetY < 0) {        y = -offsetY;    }        [self.topView mas_updateConstraints:^(MASConstraintMaker *make) {        make.top.offset(y + kNavBarHeight);    }];}

githut demo下载地址:https://github.com/biyuhuaping/NestScrollView


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 北极圈的瓜 2023-4-20 21:41
JXPagingView了解一下?
引用 李白笑了 2023-1-25 17:37
牛的离谱
引用 北极圈的瓜 2022-12-14 00:48
赞,非常不错https://www.jianshu.com/p/c7bd769f5a56
引用 快乐的鱼 2022-11-6 18:03
写的很详细

查看全部评论(4)

返回顶部