美文网首页
对tableView的contentOffset的理解

对tableView的contentOffset的理解

作者: 爱掏蜂窝的熊 | 来源:发表于2015-12-10 17:50 被阅读4245次

    tableView往上滚动, contentOffset.y为正,此时对于tableView内部控件而言,原点在哪里?

    如图所示:未开始滚动时,contentOffset.y == 0 和原点 同在一条分割线上,随着向上滚动的进行,对于tableView内部控件而言原点已经滚动到原来contentOffset.y == 0这条分割线的上方了,而此时这个位置的分割线变成contentOffset.y == 偏移量,不再是0了,是一个正数

    // 图片是加到tableView上的
    如果,要想tableView向上滚动的时候,这张图片跟着一起滚动的话,应该设置图片的y值为0,高度保持不变. 如果y值设置为offset.y,那么图片就会固定不动了

    #define OMNIBUS_HEADERINSET 214
    #define HEADER_HEIGHT 48
    
     CGPoint offset = _tableView.contentOffset;
     CGFloat headerHeight = _coverInset - offset.y;
    
    // 封面图上拉 offset.y为正,图片y值设置为0,高度不变
    // 图片原来高度_coverInset(214) + HEADER_HEIGHT(48),留出48是工具条的高度
    // 所以 _coverInset是一个临界值 等于214 OMNIBUS_HEADERINSET
    if (headerHeight < _coverInset) {
            _coverImgView.frame = CGRectMake(_coverImgView.frame.origin.x,
                                             0,
                                             _coverImgView.frame.size.width,
                                             _coverInset + HEADER_HEIGHT);
    }
    

    tableView往下滚动, contentOffset.y为负

    如图所示:未开始滚动时,contentOffset.y == 0 和原点 同在一条分割线上,随着向下滚动的进行,对于tableView内部控件而言原点已经滚动到原来contentOffset.y == 0这条分割线的下方了,而此时这个位置的分割线变成contentOffset.y == 偏移量,不再是0了,是一个负数

    // 图片是加到tableView上的
    如果,要想tableView向下滚动的时候,这张图片粘住原来的位置的话,应该设置图片的y值为offset.y,并且高度增加. 如果y值设置为0,那么图片就会不会粘住原来的位置了

    // 封面图下拉 offset.y为负,图片y值跟随offset.y变化,高度增加
    #define OMNIBUS_HEADERINSET 214
    #define HEADER_HEIGHT 48
    
     CGPoint offset = _tableView.contentOffset;
     CGFloat headerHeight = _coverInset - offset.y;
    // 图片原来高度_coverInset(214) + HEADER_HEIGHT(48),留出48是工具条的高度
    // 所以 _coverInset是一个临界值 等于214 OMNIBUS_HEADERINSET
    if (headerHeight > _coverInset) {
     _coverImgView.frame = CGRectMake(_coverImgView.frame.origin.x,
                                             offset.y,
                                             _coverImgView.frame.size.width,
                                             headerHeight + HEADER_HEIGHT);
    }
    
    向下滚动.png

    相关文章

      网友评论

          本文标题:对tableView的contentOffset的理解

          本文链接:https://www.haomeiwen.com/subject/ddklhttx.html