tableView往上滾動(dòng), contentOffset.y為正,此時(shí)對(duì)于tableView內(nèi)部控件而言,原點(diǎn)在哪里?
如圖所示:未開始滾動(dòng)時(shí),contentOffset.y == 0 和原點(diǎn) 同在一條分割線上,隨著向上滾動(dòng)的進(jìn)行,對(duì)于tableView內(nèi)部控件而言原點(diǎn)已經(jīng)滾動(dòng)到原來contentOffset.y == 0這條分割線的上方了,而此時(shí)這個(gè)位置的分割線變成contentOffset.y == 偏移量,不再是0了,是一個(gè)正數(shù)
// 圖片是加到tableView上的
如果,要想tableView向上滾動(dòng)的時(shí)候,這張圖片跟著一起滾動(dòng)的話,應(yīng)該設(shè)置圖片的y值為0,高度保持不變. 如果y值設(shè)置為offset.y,那么圖片就會(huì)固定不動(dòng)了
#define OMNIBUS_HEADERINSET 214
#define HEADER_HEIGHT 48
CGPoint offset = _tableView.contentOffset;
CGFloat headerHeight = _coverInset - offset.y;
// 封面圖上拉 offset.y為正,圖片y值設(shè)置為0,高度不變
// 圖片原來高度_coverInset(214) + HEADER_HEIGHT(48),留出48是工具條的高度
// 所以 _coverInset是一個(gè)臨界值 等于214 OMNIBUS_HEADERINSET
if (headerHeight < _coverInset) {
_coverImgView.frame = CGRectMake(_coverImgView.frame.origin.x,
0,
_coverImgView.frame.size.width,
_coverInset + HEADER_HEIGHT);
}
tableView往下滾動(dòng), contentOffset.y為負(fù)
如圖所示:未開始滾動(dòng)時(shí),contentOffset.y == 0 和原點(diǎn) 同在一條分割線上,隨著向下滾動(dòng)的進(jìn)行,對(duì)于tableView內(nèi)部控件而言原點(diǎn)已經(jīng)滾動(dòng)到原來contentOffset.y == 0這條分割線的下方了,而此時(shí)這個(gè)位置的分割線變成contentOffset.y == 偏移量,不再是0了,是一個(gè)負(fù)數(shù)
// 圖片是加到tableView上的
如果,要想tableView向下滾動(dòng)的時(shí)候,這張圖片粘住原來的位置的話,應(yīng)該設(shè)置圖片的y值為offset.y,并且高度增加. 如果y值設(shè)置為0,那么圖片就會(huì)不會(huì)粘住原來的位置了
// 封面圖下拉 offset.y為負(fù),圖片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是一個(gè)臨界值 等于214 OMNIBUS_HEADERINSET
if (headerHeight > _coverInset) {
_coverImgView.frame = CGRectMake(_coverImgView.frame.origin.x,
offset.y,
_coverImgView.frame.size.width,
headerHeight + HEADER_HEIGHT);
}