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