tableView在穿透导航栏以后让section悬浮在导航栏下面
来源:互联网 发布:无广告视频软件 编辑:程序博客网 时间:2024/06/06 03:39
上一篇我提到了让背景图片穿透导航栏,对于tableView来说,他的section会随着tableview的滑动一起滑动,直到当section将要越出在tableView的contentInsets的top时(也就是tableView的内容距离顶部的距离,默认是0,但是如果设置了tableHeaderView,系统会帮我们自动调整为64,这里就会有一个问题,在导航栏透明以及tableView没有滑动时,会有64的留白,所以我们需要设置 self.automaticallyAdjustsScrollViewInsets = NO;,不让系统调整,我们通过监听tableView的滚动自己调整),他就会悬浮在那里,但是当tableView穿透了导航栏以后tableView的farme默认是从0开始计算的,所以section的悬浮就会被NavigationBar给挡住,解决方案如下:
因为tableView继承于UIScrollView,scrollerView中我们用-(void)scrollViewDidScroll:(UIScrollView *)scrollView这个方法来监听scrollerView的时刻滚动,那么我们也可以在这个方法里监听tableView的时刻滚动,当tableView的y偏移小于tableView.tableHeaderView的高度减去64以及tableView的y偏移大于0,设置tableView的内容距离顶部的距离为0,当
tableView的y偏移大于tableView.tableHeaderView的高度-64,也就是section将要穿透navigationBar的时候,设置self.tableView的内容距离顶部的高度为64,这样tableView的内容就会从section就会悬浮在导航栏下面
//LXTableHeaderViewHeight是tableViewHeaderView的高度,注意在设置tableView的tableHeaderView时,虽然在tableView在穿透导航栏的情况下,纵坐标从0开始计算,但是对于tableView的headerView来说,系统还是会自动偏移出64(导航栏44+状态栏20)的高度,所以设置 self.automaticallyAdjustsScrollViewInsets = NO;,这样系统就不会帮我们调整了#pragma mark - UIScrollerViewDelegate-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ //获取tableView当前的y偏移 CGFloat contentOffsety = scrollView.contentOffset.y; //如果当前的section还没有超出navigationBar,那么就是默认的tableView的contentInset if (contentOffsety<=(LXTableHeaderViewHeight-64)&&contentOffsety>=0) { self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); } //当section将要就如navigationBar的后面时,改变tableView的contentInset的top,那么section的悬浮位置就会改变 else if(contentOffsety>=LXTableHeaderViewHeight-64){ self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0); } if (contentOffsety>60) { self.testView.backgroundColor =[UIColor colorWithRed:red green:green blue:blue alpha:scale]; } else{ [self.testView removeFromSuperview]; _testView = nil; }}
- tableView在穿透导航栏以后让section悬浮在导航栏下面
- ios 11 tableView穿透导航栏 同时让section悬浮在导航栏下面
- [iOS]巧妙的让导航栏透明的悬浮在ViewController上
- Android 如何让悬浮窗口覆盖显示在导航栏之上?
- tableView内的View悬停在导航栏的效果
- 悬浮导航栏
- UIViewController的View显示在导航栏下面如何解决?
- IOS 滑动tableview,导航栏渐渐显示,搜索框显示在导航栏上
- 如何让自建组件可以在导航栏使用
- 导航栏和电池栏一个颜色 + TableView在电池栏下
- swift中UI适配,即视图控件在导航栏下面开始显示
- swift中UI适配,即视图控件在导航栏下面开始显示
- swift中UI适配,即视图控件在导航栏下面开始显示
- js + css实现左侧悬浮导航栏
- CSS3--隐藏悬浮左侧导航栏
- FloatingDecoration:五行代码实现悬浮导航栏
- 导航栏二级悬浮菜单样式
- 在有导航条的页面上添加tableView
- 工商银行支付接口 B2C PHP ecshop
- jquery判断是否包含某个字符串
- 设计模式学笔记本--状态模式
- C# 与 C++ 数据类型对照表
- 全民挂机西游隐私政策
- tableView在穿透导航栏以后让section悬浮在导航栏下面
- YouTube 电影推荐系统
- 满满爱
- SAP中使用FS10N读取某一会计科目的值
- 对称算法的四种运行模式
- 8面向对象高级编程--->高级概念
- 守护进程
- 51nod 1250 排列与交换
- 卡特兰数