PDF 课件和源代码下载地址:
作者回复: 这次的触发我们可以看到是在scrollView add到didMoveToWindow之后触发的,并且我们如果加入断点可以发现此时的offset已经不是0了。
原因就是对于UIScrollView来说,默认的 UIScrollViewContentInsetAdjustmentBehavior属性调整了Inset所以导致了offset的变化。而这次offset的变化就在我们没有手动滚动的时候,触发了一次scrollViewDidScroll。如果我们设置scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;就不会触发函数的调用了。
而对于 UIScrollViewContentInsetAdjustmentBehavior 这个属性我们讲在之后适配的课程中进行讲解。
简单的理解就是,对于一个默认的UIScrollView,在初始化之后被展示出来前,系统会默认的调整Inset以适配我们的屏幕,调整inset之后为了保证看起来还在最初的位置,就需要调整offset。这就导致了这次delegate函数的调用。当然这个策略是暴露给我们的,我们可以做自定义的设置。