关于网易滚动菜单视图的实现

/**
 * 监听顶部label点击
 */
- (void)labelClick:(UITapGestureRecognizer *)tap
{
    // 取出被点击label的索引
    NSInteger index = tap.view.tag;
    
    // 让底部的内容scrollView滚动到对应位置
    CGPoint offset = self.contentScrollView.contentOffset;
    offset.x = index * self.contentScrollView.frame.size.width;
    [self.contentScrollView setContentOffset:offset animated:YES];
}
当用户触发顶部按钮或者Label的时候,手动控制ScrollView的偏移量。此时会调用

scrollViewDidEndScrollingAnimation方法,不会调用scrollViewDidEndDecelerating方法。

/**
 * scrollView结束了滚动动画以后就会调用这个方法
(比如- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;方法执行的动画完毕后)
 */
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView




滑动页面视图,会调用scrollViewDidEndDecelerating代理方法,但是停止的时候不会调用

scrollViewDidEndScrollingAnimation。此时需要手动调用该代理方法。


/**
 * 手指松开scrollView后,scrollView停止减速完毕就会调用这个
 */
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [self scrollViewDidEndScrollingAnimation:scrollView];
}

posted @ 2016-03-16 14:34  cshhs  阅读(171)  评论(1编辑  收藏  举报