让自定义视图拥有UISearchBar在UITableView上面自带的吸附效果

引言:

有时候,在UITableView的顶部,也就是HeaderView上面会有一些附加功能,例如常见的搜索功能,或者是一些数据类型的筛选.

一般情况我们会把这个附加的功能视图放在UITableView的tableHeaderView上面. 

此时你尝试把系统的UISearchBar设定为tableHeaderView时.UITableView尽然自动实现了一个隐藏显示的吸附功能.

这个小小的功能特性对于体验来说还是不错的.还有就是我们在初始化展示界面时,默认不想让用户看到附加功能.

可是,当我们把tableHeaderView设定为自定义的视图时. 这个吸附功能就自己消失了(这是多么让人失望的一件事情).

博主我尝试以自己的思路去完成这个功能. 那么就需要对这个吸附功能去分析它的实现原理.

在将tableHeaderView拖动到可见区域时,我需要调整UIScrollView的contentOffect或contentInset.

为此我尝试着添加观察者去监听这两个属性的变动情况以做出这个功能.

可是经过多次努力,最终失败了. 非常多的瑕疵,而需要应变的场景又变化多样. 其实博主对于此非常不甘心呐,但因为时间关系又无可奈何.

好了,上面讲了一堆还是没进入重点,现在呢,就是既能够使用自定义视图,又能够拥有那种有趣的吸附功能.

这里用一个成语来比喻一下我实现这个功能的方式:草船借箭(有别的更好的词,欢迎留言)

既然系统在UISearchBar上面已经把这个功能给实现了,我为什么不好好利用一下呢?

时间: 2025-01-19 15:18:47

让自定义视图拥有UISearchBar在UITableView上面自带的吸附效果的相关文章

Spring自定义视图和视图解析器简介及开发

Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring 视图和视图解析器则是 Spring MVC 中的组成部分.在介绍 Spring 视图和视图解析器前,我们先了解下在 Spring MVC 框架中,一个 Web 请求所需经历 的六个阶段: 请求会首先被 Spring MVC 的前端请求分发器(Dispatcher)拦截.该拦截器是一个 Servlet

Excel中自定义视图的添加和使用方法

  Excel中自定义视图的添加和使用方法         咱们有时需要在Excel中进行反复多次按照不同的条件进行筛选.隐藏行列等操作,当表格数据较多.自动筛选条件比较复杂时,反复操作就变成很麻烦的一件事了. 以下面这个费用表为例,需要按不同条件进行筛选: 第一个筛选的条件分别是: 日期为5月份 科目编码为550211 金额在500元以上 筛选完毕再将科目编码列隐藏. 完成的效果如下表: 如果还需要进行其他条件的筛选,这个结果就可以用自定义视图进行保存了. 依次单击[视图],[自定义视图],在

xml-通过定义一个子类在XML类中自定义视图

问题描述 通过定义一个子类在XML类中自定义视图 以下是我自定义的类 <view class=""com.productions.sample.TextCustom""// more.../> 子类 public class TextCustom extends TextView { // Stuff. } 我想实现的是 public final class Custom { public class TextCustom extends TextVie

水滴状的自定义视图,让您摆脱单调的Dialog

转载请注明出处:王亟亟的大牛之路 现在各种各样的进度条的呈现方式各种各样,我们老旧的条状条子和转圈圈的方式已经无法满足我们的业务需求,今天亟亟上的是一个水滴状循环滚动的一个自定义视图,你可以把他用在各种不同的场景下. 先上效果图: 然后又添加了真空,隐藏和显示的效果,如图. 项目结构: 主Activity public class MainActivity extends AppCompatActivity { private MetaballView metaballView; @Overri

Android自定义视图二:如何绘制内容

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 有的时候自持扩展一个标准的Android视图是不够的.你需要在视图上绘制你自己的内容才行.本文将会讲述如何使用Canvas类来绘制一个折线图,并会讲述如何处理尺寸和padding. 如果你还没

Android自定义视图三:给自定义视图添加“流畅”的动画

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 在第二部分我们实现了一个简单的折线图.这里假设你已经读了前篇.下面我们将继续为这个折线图添砖加瓦. 我在想给这个图的上方添加三个按钮,这样用户可以点选不同的按钮来查看不同类别的数据.比如,用户

Android自定义视图一:扩展现有的视图,添加新的XML属性

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承实现view group以及如何给其子视图添加动画.第一篇

iOS7应用开发7:自定义视图、手势操作

1.视图: #屏幕上表示某一个矩形区域:某个视图只能有一个父视图,但是可能有多个子视图: #UIWindow:屏幕视图,在整个视图结构体系的最上层,仅适用于ios应用: #添加视图的函数: - (void)addSubview:(UIView *)aView; - (void)removeFromSuperview; #在MVC结构中,视图结构体系最上层的是属性@property view: #初始化UIView:awakeFromNib函数,或{[UIView alloc] init]; #视

Android自定义视图四:定制onMeasure强制显示为方形

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 上一篇开发之后的效果如上图.不过看着这张图,需要注意的不是我们自定义视图展示了什么,而是这个视图的大小和位置.你会看到这个折线图有一个特定的大小(size).这个size是怎么定的呢?现在的代