1、问题背景:
最近有个需求是列表滚动的时候修改其他view的透明度和位置,接到需求立马想到通过scrollview的scrollViewDidScroll:的回调然后获取scrollview的contentOffset.y,然后设置位置和透明度,结果比较失望,总是会出现位置停在某个位置或者透明度不对。
2、问题分析:
在scrollViewDidScroll:方法里面输出contentOffset.y,随意拖动几下,获得如下结果:
发现在scrollViewDidScroll:访问contentOffset是不连续的,总是认为这个方法是实时回调的,看来下官方API的说明:
按苹果的说法应该是any offset changes都会调用。
3、解决方案:
然后想到尝试用KVO监听scrollview的contentOffset的变化然后设置位置和透明度,结果可以满足需求。