scrollview tableView嵌套解決方案示例
正文
在網(wǎng)上找了很多,沒(méi)有喜歡的方案。也參考了眾多設(shè)計(jì),做了一款自認(rèn)為比較簡(jiǎn)潔、完美的方案:
大致思路:外層放置scrollview作為容器,容器內(nèi)上部分topView,下部分tableView。當(dāng)tableView滾動(dòng)時(shí),如果topView還在展示區(qū)域,就設(shè)置topView的y坐標(biāo),讓topView跟隨同步上移。
(注意:如果不設(shè)置tableView的headerView,tableView、和topView都會(huì)同時(shí)上移不是我想要的效果,所以設(shè)置tableView的headerView高度包括topView的高度,達(dá)到了完美的效果,具體實(shí)現(xiàn)看demo)
效果預(yù)覽:
NestScrollView.gif
核心代碼就是在父視圖、子試圖的滾動(dòng)判斷
//父視圖滾動(dòng)的回調(diào),用于橫向滾動(dòng)判斷
//父視圖滾動(dòng)的回調(diào),用于橫向滾動(dòng)判斷 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat placeholderOffset = 0; if (self.topView.selectedIndex == 0) { if (self.firstTableView.contentOffset.y > 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]; } }
//子視圖滾動(dòng)的回調(diào),用于豎直方向上滾動(dòng)判斷
//子視圖滾動(dòng)的回調(diào),用于豎直方向上滾動(dòng)判斷 - (void)updateTopViewFrame:(UIScrollView *)scrollView{ CGFloat placeHolderHeight = CGRectGetHeight(self.topView.frame) - self.topView.itemHeight; CGFloat offsetY = scrollView.contentOffset.y; CGFloat y = 0.0; if (offsetY >= 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
以上就是scrollview tableView嵌套解決方案示例的詳細(xì)內(nèi)容,更多關(guān)于scrollview tableView嵌套的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Flutter Widgets粘合劑CustomScrollView NestedScrollView滾動(dòng)控件
- 判斷?ScrollView List?是否正在滾動(dòng)詳解
- UIScrollView實(shí)現(xiàn)六棱柱圖片瀏覽效果
- Android使用NestedScrollView?內(nèi)嵌RecycleView滑動(dòng)沖突問(wèn)題解決
- Android超詳細(xì)講解組件ScrollView的使用
- Flutter滾動(dòng)組件之SingleChildScrollView使用詳解
- 一行代碼教你解決Scrollview和TextInput焦點(diǎn)獲取問(wèn)題
相關(guān)文章
淺談iOS推送證書生成pem文件(詳細(xì)生成過(guò)程)
這篇文章主要介紹了淺談iOS推送證書生成pem文件(詳細(xì)生成過(guò)程),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08iOS實(shí)現(xiàn)簡(jiǎn)易的導(dǎo)航欄顏色漸變實(shí)例代碼
很多APP 都有導(dǎo)航欄顏色漸變的效果,下面這篇文章主要給大家介紹了關(guān)于iOS如何實(shí)現(xiàn)簡(jiǎn)易的導(dǎo)航欄顏色漸變效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧2018-10-10Flutter Widgets MediaQuery控件屏幕信息適配
這篇文章主要為大家介紹了Flutter Widgets 之 MediaQuery控件獲取屏幕信息和屏幕適配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11iOS開(kāi)發(fā)中使用文字圖標(biāo)iconfont的應(yīng)用示例
這篇文章主要介紹了iOS開(kāi)發(fā)中使用文字圖標(biāo)iconfont的應(yīng)用示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例
本篇文章主要介紹了iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01iOS Block解開(kāi)多年以來(lái)一直的誤解
這篇文章主要給大家介紹了關(guān)于iOS Block多年以來(lái)一直的誤解如何解開(kāi)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05