scrollerView 滚动的时候改变 scrollerView 的背景色代码

要实现点击电池条的时候立即回到页面的顶部的时候注意:

 

只有当一个主控制器有一个scrollview 并把这个属性设置为yes,其他的scrollview.scrollsToTop = NO 这样才会响应这个事件,原理很简单,如果有2个scrollview,系统根本不知道你需要哪个滚动到最上面 切记!

 

滑动页面的时候,改变scrollerView 的背景色:

 

1、遵循协议:<UIScrollViewDelegate>


2、写成私有变量
    // 优化页面的拖拽的时候使用
    CGFloat _contentOffsetY;
    CGFloat _oldContentOffsetY;
    CGFloat _newContentOffsetY;

3、执行方法
#pragma mark—————— 优化页面的拖拽的时候使用(开始)
// 开始拖拽页面
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    _contentOffsetY = scrollView.contentOffset.y;
    if (_contentOffsetY <= 0) {//确保在向上快拖的时候,底部色值不抖动
       
        scrollView.backgroundColor = K_SET_COLOR_VALUE(K_NAV_BGC);
        //NSLog(@"\n\n %s  【_contentOffsetY】= %.2f \n",__FUNCTION__,_contentOffsetY);
    }
}
//滚动时候调用该方法(手指离开屏幕后)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
   
    _newContentOffsetY = scrollView.contentOffset.y;
   
    // 滚动
    if (_newContentOffsetY > _oldContentOffsetY && _oldContentOffsetY > _contentOffsetY) { // 向上滚动
         if (_newContentOffsetY > 0) {// 确保,上下抖动的时候,顶部不抖色
           scrollView.backgroundColor = K_SET_COLOR_VALUE(K_ROOT_BGC);
         }
       
    } else if (_newContentOffsetY < _oldContentOffsetY && _oldContentOffsetY < _contentOffsetY) { // 向下滚动
        if (_newContentOffsetY < 0) {// 确保,上下抖动的时候,底部不抖色

          scrollView.backgroundColor = K_SET_COLOR_VALUE(K_NAV_BGC);
          //NSLog(@"\n\n %s \n",__FUNCTION__);
        }
       
    }
   
    // 拖拽
    if (scrollView.dragging) {
        if ((scrollView.contentOffset.y - _contentOffsetY) > 5.0f) { // 向上拖拽
           
            //NSLog(@"\n\n %s 【_newContentOffsetY】 = %.2f \n",__FUNCTION__,_newContentOffsetY);
            if (_newContentOffsetY > 0) {// 确保,上下抖动的时候,顶部不抖色
              scrollView.backgroundColor = K_SET_COLOR_VALUE(K_ROOT_BGC);
            }
           
        } else if ((_contentOffsetY - scrollView.contentOffset.y) > 5.0f) { // 向下拖拽
           
            if (_newContentOffsetY < 0) {// 确保,上下抖动的时候,底部不抖色
               scrollView.backgroundColor = K_SET_COLOR_VALUE(K_NAV_BGC);
            //NSLog(@"\n\n %s \n",__FUNCTION__);
            }
           
        }
    }
}
// 确实结束减速
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
   
    //NSLog(@"\n\n【_newContentOffsetY】 =  %.2f \n",_newContentOffsetY);
    if (_newContentOffsetY > 0) {//确保在向上快拖的时候,顶部色值不抖动
       
        scrollView.backgroundColor = K_SET_COLOR_VALUE(K_ROOT_BGC);
    }
    _newContentOffsetY = 0.0f;
}

// 完成拖拽(滚动停止时,调用此方法,手指离开屏幕前)
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

    _oldContentOffsetY = scrollView.contentOffset.y;
   
}
#pragma mark—————— 优化页面的拖拽的时候使用(结束)

 

posted @ 2016-01-02 23:11  ywda  阅读(490)  评论(0)    收藏  举报