本文主要是介绍对tableView的contentOffset的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 48CGPoint 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 48CGPoint 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); }
作者:爱掏蜂窝的熊
链接:http://www.jianshu.com/p/7c67f248d89f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇关于对tableView的contentOffset的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!