背景
需求其实很简单,想用代码的形式让UIScrollView在一定条件下滚动起来,自然而然地想到了
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
问题
然后我就设置contentOffset为每次我想滚动的偏移量,比如说我想向下滚动50个点,我就设置contentOffset为CGPointMake(0, 50),结果我就发现滚到一定程度再也滚不动了,但是scrollView的contentSize肯定足够,让我懵了一下。
解决问题
最后我就发现,这个contentOffset根本不是每次的偏移量,而是scrollView总的偏移量。。。 那问题就简单了,比如我还是想每次向下滚动50个点,我就设置contentOffset为CGPointMake(scrollView.contentOffset.x, scrollView.ContentOffset.y + 50),记住一定要设置x为scrollView.contentOffset.x,才能保证scrollView不会发生横向的偏移。
额外内容
建议使用
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
而不要使用
- (void)setContentOffset:(CGPoint)contentOffset;
即便你并不想要动画效果。