前言 |
对于市面上用户群体较大的App
来说,Android
和iOS
两个版本的某些部分的使用体验有些差异。这种现象的起因或归结于平台的操作系统本身的不同,也可以想成是充分利用平台本身提供的资源,打造符合其使用习惯的应用。
为了和文题相关,这里就举例QQ
来说明。Android
版本的下拉刷新就是一个翻转的小箭头效果,而iOS
版本的却是其平台本身很经典的牛皮糖(黏性)效果。考虑到Tencent
在后来推出针对强迫症用户清理消息记录的那样一个黏性气泡样式,这也就说明Android
是可以实现这样的功能的。(这也是理所应当的,Android
也是很强大的。)再说左滑将消息记录删除、置顶、标记为未读的功能选项,这两个版本的QQ
都具备。不过仔细观察的话,不难发现Android
上的可能是仿照的iOS
原生的功能,前者的使用体验明显没有后者丝滑、流畅
,因为前者的这些功能选项是拼接在视图的尾部的。或许、估计、大概Android
原生没有这样的使用效果,而QQ
的iOS
开发团队使用原生效果开发出来以后产品经理觉得这使用体验很不错,就督促Android
开发小组也整个一样的。(完全靠猜,错了别打我!)不然的话,上述的功能选项你就只能长按视图然后在弹出的一个界面中来找了,就像起点读书
的Android
版本一样。(用起来真心别扭,唉!被Apple
的使用体验惯坏了!)
咳咳,不好意思,以上闲扯了许多,其实就想说明Android
在使用体验上与iOS
还有一定的距离。而Apple
也不是个好东西
,卖得太贵贵贵。
好,不吐槽了,开始下一话题:实现iOS
版QQ
黏性下拉刷新的效果,嗯!简易实现。(谦虚使人进步,骄傲使人落后!)
对你黏、黏、黏不完 |
前文说到的简易实现是指文章中的例子会以很简单的方式来完成黏性的效果,因此可能会一定程度上影响自然度,也就是曲线的曲率看起来或多或少有些不协调。不过这只是些微的对美观的破坏,总体来说成效能达到百分之八九十,剩下的份额为采用这样一个简易的绘制过程所付出的一些代价,它对应为这样的过程:
整个黏性的视图由四段曲线绘制填充形成,分别是上下两个半圆和左右两条二阶贝塞尔曲线。最开始的实践方案是采用上下两个圆,就会导致曲线的填充出现问题。你可以试试,看看会发生怎样的现象。
说到这里相信你对最终的实现已经成竹在胸了:黏性视图使用CAShapeLayer
来表现,通过路径来绘制它的外观轮廓。当然,以上整个过程得在UITableView/UIScrollView
的拖拽过程中进行,因为只有这样我们才能判断当前应当展示怎样的黏性程度。