iOS开发之路问题归纳--01 UIScrollView的setContentOffset使用问题

1,252 阅读1分钟

背景

需求其实很简单,想用代码的形式让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;

即便你并不想要动画效果。