当前位置: 首页 > 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滑动吸顶

相关文章:

  • 【机器学习基础】机器学习入门核心算法:多分类与多标签分类算法
  • 深入探讨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通讯——机器人抓取系统基础系列(六)
  • 微型导轨在手术机器人领域中有哪些关键操作?
  • 博客建站程序/网搜网
  • 朝阳网站建设是什么/香港域名注册网站
  • 武汉h5建站模板/泉州seo网站排名
  • 本机可以做网站的服务器吗/百度站长资源平台
  • 网站前端开发培训西安/seo搜索引擎优化技术
  • 设计网站页面特效怎么做/高级搜索引擎技巧