UIScrollview 动画,setContentOffset:与setContentOffset:animate:异同点

一、
1.1使用animated参数,可以获得正确的UIScrollViewDelegate的回调;而使用UIView动画则不能。
scrollViewDidScroll:
scrollViewDidEndScrollingAnimation:

1.2不使用animated参数,只可以回调scrollViewDidScroll:

二、
2.1使用animated参数,可以获取到动画过程中contentOffset的值。
eg:
[scrollView setContentOffset:CGPointMake(0, 100) animated:YES];
NSLog(@"%f", scrollView.contentOffset.y);//输出:0.000000
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
NSLog(@"%f", scrollView.contentOffset.y);//输出:25.500000,每次输出不保证一致
});
2.2不使用animated参数,使用UIView动画后,无论在什么时候查询contentOffset的值,得到的都是动画的最终值。
[UIView animateWithDuration:0.25
animations:^{
[scrollView setContentOffset:CGPointMake(0, 100)];
}];
NSLog(@"%f", scrollView.contentOffset.y);//输出:100.000000

详情见:http://ios.jobbole.com/85224/

推荐阅读更多精彩内容