当前位置: 首页 > news >正文

ios tableview吸顶

由于项目需要实现一个上滑吸顶的效果,网上也看到有很多种方式实现,但是如果加上下拉刷新的功能会导致界面异常,还有第三方库实现方式库,太繁琐了,下面是我的实现方式,效果如下:

tablevie滑动吸顶

主要代码部分:

横线滚动代理方法updateTopViewFrame

//父视图滚动的回调,用于横向滚动判断
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{NSLog(@"scrollViewDidScroll - %.2f, %.2f",scrollView.contentOffset.x, scrollView.contentOffset.y);CGFloat placeholderOffset = 0;UIScrollView *scroll;if (self.topView.selectedIndex == 0) {scroll = self.firstTableView;}else {scroll = self.secondTableView;}if (scroll.contentOffset.y > CGRectGetHeight(self.topView.frame) - self.topView.itemHeight) {placeholderOffset = CGRectGetHeight(self.topView.frame) - self.topView.itemHeight;}else {placeholderOffset = scroll.contentOffset.y;}//当主talbeview向上滑动的时候,要禁止主scrollerview滑动,if([scrollView isKindOfClass:CustomScrollView.class]){if(scrollView.contentOffset.y >= 0){ //向上滑动self.ctyscrollview.contentOffset = CGPointZero;self.ctyscrollview.scrollEnabled = NO;self.firstTableView.contentOffset = CGPointZero;self.secondTableView.contentOffset = CGPointZero;}return;}[self.secondTableView setContentOffset:CGPointMake(0, placeholderOffset) animated:NO];[self.firstTableView setContentOffset:CGPointMake(0, placeholderOffset) animated:NO];
}

纵向滑动代理方法updateTopViewFrame

//子视图滚动的回调,用于竖直方向上滚动判断
- (void)updateTopViewFrame:(UIScrollView *)scrollView{CGFloat placeHolderHeight = CGRectGetHeight(self.topView.frame) - self.topView.itemHeight;CGFloat offsetY = scrollView.contentOffset.y;//顶部topiview跟随滑动CGFloat y = 0.0;if (offsetY >= 0 && (offsetY <= placeHolderHeight)) {NSLog(@"1- offsetY:%.2f <= placeHolderHeight:%.2f", offsetY, placeHolderHeight);y = -offsetY;} else if (offsetY > placeHolderHeight) {NSLog(@"2- offsetY:%.2f > placeHolderHeight:%.2f", offsetY, placeHolderHeight);y = -placeHolderHeight;} else if (offsetY < 0) {NSLog(@"3- offsetY:%.2f < 0,  placeHolderHeight:%.2f", offsetY, placeHolderHeight);y = -offsetY;}self.topView.y = y;//当主scrollerview滑动的时候,tableview要禁止滑动,if(offsetY <= 0){self.ctyscrollview.scrollEnabled = YES;self.firstTableView.contentOffset = CGPointZero;self.secondTableView.contentOffset = CGPointZero;if(!CGPointEqualToPoint(self.ctyscrollview.frame.origin, CGPointZero)){self.ctyscrollview.contentOffset = CGPointZero;}}else{self.ctyscrollview.scrollEnabled = NO;}
}

CustomScrollView中需要加上以下联动代理方法


///允许同时接受手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{return YES;
}

demo代码下载地址:

Jack/多tableview滑动吸顶


文章转载自:

http://hz9W2yc1.yqrfn.cn
http://uSE8keeg.yqrfn.cn
http://F1RnmOkA.yqrfn.cn
http://9BIhWI8D.yqrfn.cn
http://fZ7FNJUg.yqrfn.cn
http://IrHNmdS6.yqrfn.cn
http://CCmsQ8Cz.yqrfn.cn
http://DChJOYXC.yqrfn.cn
http://5M2atqwK.yqrfn.cn
http://mUFGW99o.yqrfn.cn
http://OAVfLKPX.yqrfn.cn
http://wXWgEQc6.yqrfn.cn
http://S9vmpsoc.yqrfn.cn
http://LgeYqcc8.yqrfn.cn
http://81o2mvaD.yqrfn.cn
http://cd7hCA5z.yqrfn.cn
http://YIAnX2pZ.yqrfn.cn
http://8Ge5Jwq7.yqrfn.cn
http://1e8Rcyxj.yqrfn.cn
http://O8RUNIxl.yqrfn.cn
http://xo4fHRnK.yqrfn.cn
http://95kt3Syt.yqrfn.cn
http://zfxqPTT7.yqrfn.cn
http://Z5jlP7Cf.yqrfn.cn
http://1IwzR6gp.yqrfn.cn
http://FdALobs1.yqrfn.cn
http://E7a2YbFc.yqrfn.cn
http://dSp8N1Za.yqrfn.cn
http://HRrTFzHo.yqrfn.cn
http://EgkM2h4M.yqrfn.cn
http://www.dtcms.com/a/226634.html

相关文章:

  • 【机器学习基础】机器学习入门核心算法:多分类与多标签分类算法
  • 深入探讨redis:缓存
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计
  • World of Warcraft Hunter [Grandel] [Ancient Petrified Leaf]
  • C++ 标准输入输出 -- <iostream>
  • 开源的JT1078转GB28181服务器
  • API 版本控制:使用 ABP vNext 实现版本化 API 系统
  • Arch安装megaton
  • 湖北理元理律所:企业债务重组中的“法律缓冲带”设计
  • 服务器间文件传输
  • 好用的C/C++/嵌入式 IDE: CLion的下载安装教程(保姆级教程)
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • 5.RV1126-OPENCV 图形计算面积
  • Python----目标检测(《YOLO9000: Better, Faster, Stronger》和YOLO-V2的原理与网络结构)
  • Node.js 项目调试指南
  • 「Java教案」算术运算符与表达式
  • 机器人自动火焰切割H型钢的系统设计与应用
  • 云计算数据治理
  • 机器人夹爪的选型与ROS通讯——机器人抓取系统基础系列(六)
  • 微型导轨在手术机器人领域中有哪些关键操作?
  • Git-flow流
  • BUUCTF[极客大挑战 2019]Secret File 1题解
  • Deepseek给出的8255显示例程
  • 微服务常用日志追踪方案:Sleuth + Zipkin + ELK
  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • 【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+
  • 深度剖析:AI 建站的现状、局限与未来展望-AI编程建站实战系列预告优雅草卓伊凡
  • demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试
  • 什么是 CPU 缓存模型?
  • NVMe IP现状扫盲