UItableview滑動(dòng)抖動(dòng)和刷新位置上移

1.抖動(dòng)問題:使用系統(tǒng)方法自動(dòng)布局會(huì)造成來回切換頁面數(shù)據(jù)刷新時(shí)愧哟,上下滑動(dòng)會(huì)一直抖動(dòng)只嚣,設(shè)置header和footer的預(yù)估高度只適用于一種header或footer的高度,如果有多種header或者footer高度不斷變化无拗,就會(huì)抖動(dòng)挫鸽,親測(cè)有效缚柳。其實(shí)說到底我們的需求大部分只需要設(shè)置cell的自動(dòng)布局就OK了,cell的控件比較多的情況搪锣,手動(dòng)計(jì)算很繁瑣秋忙,只不過是header和footer的預(yù)估高度默認(rèn)就是自動(dòng)布局了,我們頁不會(huì)去想到是這個(gè)原因构舟,還以為是cell的自動(dòng)布局導(dǎo)致的抖動(dòng)翰绊,那這樣就直接設(shè)置header和footer的預(yù)估高度等于0禁用掉,然后在代理方法里面設(shè)置高度即可旁壮,cell的高度計(jì)算還是可以使用UITableViewAutomaticDimension計(jì)算的监嗜。
  • 原來的代碼:
 _tableView.estimatedRowHeight = 120.f;
 _tableView.estimatedSectionHeaderHeight = 50.f;
 _tableView.estimatedSectionFooterHeight = 60.f;
 _tableView.rowHeight = UITableViewAutomaticDimension;
\color{red}{更正一下:這邊最后發(fā)現(xiàn)是estimatedSectionHeaderHeight和estimatedSectionFooterHeight導(dǎo)致的抖動(dòng)問題} \color{red}{禁用header和footer的預(yù)估高度(設(shè)置為0)可以保證不抖動(dòng)},

\color{red}{cell設(shè)置estimatedRowHeight的預(yù)估高度,使用自動(dòng)布局即可}

  • 修改后
 _tableView.estimatedRowHeight = 120.f;
 _tableView.estimatedSectionHeaderHeight = 0;
 _tableView.estimatedSectionFooterHeight = 0;//禁用掉或者準(zhǔn)確的設(shè)置高度,否則都會(huì)造成抖動(dòng)
 _tableView.rowHeight = UITableViewAutomaticDimension;
其他的方法:好像不太適用我的頁面抡谐,因?yàn)槲疫@個(gè)tableview有2段接口數(shù)據(jù)分開加載顯示的
// declare cellHeightsDictionary
NSMutableDictionary *cellHeightsDictionary;
 
// initialize in code (thanks to @Gerharbo)
cellHeightsDictionary = @{}.mutableCopy;
 
// declare table dynamic row height and create correct constraints in cells
tableView.rowHeight = UITableViewAutomaticDimension;
 
// save height
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cellHeightsDictionary setObject:@(cell.frame.size.height) forKey:indexPath];
}
 
// give exact height value
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSNumber *height = [cellHeightsDictionary objectForKey:indexPath];
    if (height) return height.doubleValue;
    return UITableViewAutomaticDimension;
}
2.當(dāng)我滑動(dòng)到當(dāng)前cell時(shí)裁奇,點(diǎn)擊上面的按鈕重新加載數(shù)據(jù)刷新頁面,發(fā)現(xiàn)整個(gè)tableview自動(dòng)滑到最頂部了麦撵,我想要的效果刷新后繼續(xù)停在當(dāng)前cell刽肠。后面發(fā)現(xiàn)是因?yàn)閇tableView reloadData]方法的時(shí)機(jī)不太對(duì)造成的,恰好刷新時(shí)數(shù)據(jù)源被清空或者數(shù)據(jù)源的數(shù)量改變了免胃,所以一定要在整個(gè)數(shù)據(jù)源賦值完成之后再對(duì)整個(gè)tableview進(jìn)行reload音五,或者只影響當(dāng)前cell只刷新當(dāng)前cell的方法就ok了,我這個(gè)是對(duì)整個(gè)頁面的數(shù)據(jù)都有影響所以才使用[tableView reloadData]方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羔沙,一起剝皮案震驚了整個(gè)濱河市躺涝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扼雏,老刑警劉巖坚嗜,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诗充,居然都是意外死亡苍蔬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門蝴蜓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碟绑,“玉大人,你說我怎么就攤上這事茎匠「裰伲” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵汽抚,是天一觀的道長(zhǎng)抓狭。 經(jīng)常有香客問我伯病,道長(zhǎng)造烁,這世上最難降的妖魔是什么否过? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮惭蟋,結(jié)果婚禮上苗桂,老公的妹妹穿的比我還像新娘。我一直安慰自己告组,他們只是感情好煤伟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著木缝,像睡著了一般便锨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上我碟,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天放案,我揣著相機(jī)與錄音,去河邊找鬼矫俺。 笑死吱殉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厘托。 我是一名探鬼主播友雳,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼铅匹!你這毒婦竟也來了押赊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤包斑,失蹤者是張志新(化名)和其女友劉穎考杉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舰始,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崇棠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丸卷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枕稀。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谜嫉,靈堂內(nèi)的尸體忽然破棺而出萎坷,到底是詐尸還是另有隱情,我是刑警寧澤沐兰,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布哆档,位于F島的核電站,受9級(jí)特大地震影響住闯,放射性物質(zhì)發(fā)生泄漏瓜浸。R本人自食惡果不足惜澳淑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望插佛。 院中可真熱鬧杠巡,春花似錦、人聲如沸雇寇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锨侯。三九已至嫩海,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚痴,已是汗流浹背出革。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渡讼,地道東北人骂束。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像成箫,于是被迫代替她去往敵國和親展箱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容