瀑布流实现原理
瀑布流实现原理
在视图中添加多个视图,当划动其中一个视图时,调用协议方法让其他scrollView也跟着划动.
//瀑布流的核心代码:当一个表视图偏移时,设置另一个表视图也偏移同样的坐标
//在滚动内容时调用此方法(有任何的内容偏移都会调用)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(scrollView==_tableView1){
CGPoint pt=_tableView1.contentOffset;
[_tableView2 setContentOffset:pt];
}
else{
CGPoint pt=_tableView2.contentOffset;
[_tableView1 setContentOffset:pt];
}
}
其他scrollView的代理方法<UIScrollViewDelegate>
// 发生任何偏移时
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// 任何比例缩放
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
// 开始拖动时调用 (也可能在移动一段时间或距离后调用)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
// 手指将要抬起停止拖动时调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
// 手指抬起停止拖动时调用,抬起后视图还会移动一段距离,慢慢减速到停止
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//手指将要开始拖动时调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
//停止拖动时调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
//结束动画时调用
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
//返回一个放大的视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
//将要开始缩放视图时调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
//结束缩放时调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
//当点击status bar时是否将视图滚到顶部,默认是YES
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
//滚到顶部时调用,如果已经在顶部,可能会马上调用
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;