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
网友评论