一个巧妙的实现悬浮的tableViewHeader的方法

摘要:
我原来老想着利用在tableView的内部做点什么来实现这个功能,而这个方法让我跳出了定式思维,把headerView放在外面,可就想怎么变就怎么变了!!!这肯定不能忍了,所以需要想个办法可以让tableView的手势可以透过这个自定义的headerView,而这个方法,就是重载headerView的hitTest方法。因为这个事件的传递是由顶层向下传递的,所以add到headerView之上的view会优先响应其自己的事件,所以headerView上的button之类的subView都不会受到影响。
之前因为工作需要要实现一个类似的
一个巧妙的实现悬浮的tableViewHeader的方法第1张一个巧妙的实现悬浮的tableViewHeader的方法第2张一个巧妙的实现悬浮的tableViewHeader的方法第3张
悬浮+视差的headerView的效果,
研究了好久没研究出来怎么做,最后用UICollectionView +CSStickyHeaderFlowLayout的方法实现了(不得不说CSStickyHeaderFlowLayout真的是一个很强大的库,作者对UICollectionView的理解真的是深刻,建议有空一定要看一下他的源码)。唯一有点小不爽的是我用了一个UICollectionView来实现了一个UITableView。。。
后来在gitHub上受ARSegmentPager启发,发现了另外一种巧妙的思路,也可以比较好的实现这种效果,而且用UITableView就可以实现,实现方式也比较简单,还可以做更多的扩展,所以赶紧记录一下。
这个思路的核心就是:
将自定义的headerView放在tabView 的上面,而不是作为tableView.tableHeaderView(即headerView和tableView平级,都添加到viewController的view上),然后设置tableView的contentInset为合适的值,在tableView滑动的时候,动态改变view的位置或者大小,使这个headerView看起来就像是有了悬浮功能的tableView.tableHeaderView。
我原来老想着利用在tableView的内部做点什么来实现这个功能,而这个方法让我跳出了定式思维,把headerView放在外面,可就想怎么变就怎么变了!!!(而且如果不提前说,几乎看不出来这不是tableHeaderView)
比如说这样:
一个巧妙的实现悬浮的tableViewHeader的方法第4张
或者这样:
一个巧妙的实现悬浮的tableViewHeader的方法第5张
再或者这样:
一个巧妙的实现悬浮的tableViewHeader的方法第6张
当然,还可以做更多炫酷的效果,我这儿只是几个最简单最容易实现的。
具体demo地址在这里:https://github.com/Phelthas/TEST_XMLCommon
玩过以后你可能也发现问题了,这个只有手指在tableView上的时候才能滑动,在headerView上就不行了。。。。。。这肯定不能忍了,
所以需要想个办法可以让tableView的手势可以透过这个自定义的headerView,而这个方法,就是重载headerView的hitTest方法。(代码我已经更新到gitHub上了)
hitTest具体机制及原理可以google百度,大概的作用就是控制UIEvent的传递,返回应该由哪个view来响应事件。
因为这个事件的传递是由顶层向下传递的,所以add到headerView之上的view会优先响应其自己的事件,所以headerView上的button之类的subView都不会受到影响(但是add到headerView上的手势就不行了,如果有需要,可以在headerView上add一个等大小的subView,把手势加到这个subView上)。
所以这个方法hitTest方法在这里还是很好用的~~~

免责声明:文章转载自《一个巧妙的实现悬浮的tableViewHeader的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql主从复制延迟问题的相关知识与解决方案弹出窗口showModalDialog用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOS 使用Autolayout实现UITableView的Cell动态布局和高度动态改变

如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并且能够保持平滑滚动的? 这个问题得到了300+的支持和450+的收藏,答案得到了730+的支持,很详细的说明了如何在iOS7和iOS8上实现UITableView的动态行高功能,并且这个答案对实现UICollectionView的动态行高也具有参考...

TableView的优化

一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器):CPU主要从事逻辑计算的一些工作;GPU主要从事图形处理方面的工作。 2)CPU和GPU的共同点: 都有自己的缓存体系,都有自己的数字和逻辑运算单元,都为了完成计算任务而设计。 3)CPU和GPU的不同点: CPU的核少但是核内空间非常大,能够处理复杂的逻...

IOS UITableView

一、自定义TableViewCell 1. 创建Cocoa Touch Class文件,同时,生成xib文件。 2. 设置xib文件对象的基类    3. 拖拽控件(UIImageView、UILabel),并且设置其位置和大小。    4. 用拖拽方式创建控件属性代码,使用Alt+鼠标左键同时打开xib文件及基类*.h文件。再用Control+鼠标左键,...

类似西瓜视频、抖音的自动播放库

AutoVideoPlayer Play/pause videos automatically in UITableview when an UITableViewCell is in focus, videos can be easily embedded in any UITableViewCell subclass. Can be easily ex...

ios基础之UITableViewCell的重用(带示例原创)

之前一个月刚刚系统的开始接触IOS开发,对UI控件大体了解了一遍,但是因为没有实际的参与项目,对细枝末节的还是不很清楚。 昨天突然想到:UITableViewCell的重用到底是怎么回事,上网查了许多资料后略有体会,但大都差不多,于是想自己实验一下。 便新建了个single view的工程,在storyboard上拖了个tableview,用最基础的方法绑...

IOS 学习:UITableView 使用详解1

IOS 学习:UITableView 使用详解1 tableView作为最常见的视图之一在ios应用之中占有举足轻重的地位,因此学习tableView是非常重要的。这篇文章粗略的介绍tableView的创建过程和几个基本的委托方法。 1.添加委托和成员变量。 在视图控制器类的头文件当中,声明UITableView 指针变量table,数组datalList...