iOS TableView Header、Footer高度異常問題

由于歷史原因,項(xiàng)目中只有一個(gè)Controller,有相機(jī)等其他耗性能的功能,其他的頁(yè)面都是以View的形式Add上去,出現(xiàn)了幾個(gè)關(guān)于tableView的UI問題,記錄下可能的情況以及解決方案。

注:以下出現(xiàn)的都是公司項(xiàng)目里出現(xiàn)過的,解決方案可能只適用上述的項(xiàng)目結(jié)構(gòu)中,請(qǐng)讀者自行分辨。

一、tableViewHeader/tableFooterView設(shè)置后出現(xiàn)高度莫名減少64/49

處理方式:
1)先檢查約束是否正確,出現(xiàn)這種特殊偏差往往是約束不對(duì)。如果是frame和autolayout混用則檢查起父控件的autolayout。
2)不要使用tableView.tableFooterView = footerView;的方式換用[tableView setTableFooterView:footerView]調(diào)用。理論上這兩個(gè)是同樣的,實(shí)際使用時(shí)偶現(xiàn)效果不同的情況。
3)在- (void)drawRect:(CGRect)rect中重新設(shè)置Frame
4)在- (void)layoutSubviews中重新設(shè)置Frame
5)使用以下方式直接設(shè)置frame

    CGRect frame = self.tableView.tableFooterView.frame;
    frame.size.height = 120;
    self.tableView.tableFooterView.frame = frame;

6)使用以下方式間接設(shè)置frame

    UIView *footerV = [UIView new];
    footerV.frame  = CGRectMake(0, 0, 120, 120);
    self.tableView.tableFooterView = footerV;

7)組合使用上述幾種方案
如在3)中和5)一起使用,3)中和6)一起使用

分析原因:可能都是layout引起的問題,由于項(xiàng)目結(jié)構(gòu)的原因出現(xiàn)了這些高度異常。在普通項(xiàng)目中并沒有出現(xiàn)。

二、其他UI顯示異常

1.Plain模式下出現(xiàn)快速上下滑動(dòng)出現(xiàn)sectionHeader突然卡在屏幕中間

折中處理:改為Groupe模式。
原因分析:可能是項(xiàng)目中出現(xiàn)耗性能的東西導(dǎo)致在計(jì)算section位置出現(xiàn)異常導(dǎo)致,代碼上沒有想到更好的方案,目前折中處理。

2.Group模式下出現(xiàn)header和footer出現(xiàn)了多余的部分

處理方法:在heightForHeader和heightForFooterInSection方法中返回0.01,不要返回0可解決。
原因分析:Group模式下section默認(rèn)是有高度的,設(shè)置為0則會(huì)觸發(fā)顯示默認(rèn)高度。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,073評(píng)論 4 61
  • 版權(quán)聲明:未經(jīng)本人允許,禁止轉(zhuǎn)載. 1. TableView初始化 1.UITableView有兩種風(fēng)格:UITa...
    蕭雪痕閱讀 2,981評(píng)論 2 10
  • 程序猿最煩兩件事,第一件事是別人要他給自己的代碼寫文檔,第二件呢?是別人的程序沒有留下文檔。 1.『淺入淺出』My...
    極樂叔閱讀 158評(píng)論 0 0
  • 領(lǐng)導(dǎo),您好!今天聽到了一個(gè)關(guān)于您的好消息——結(jié)束異地工作,恭喜您! 聽到這個(gè)消息,又高興又失落的情緒圍繞了...
    善良蜜罐兒閱讀 244評(píng)論 1 1
  • 這個(gè)假期長(zhǎng)達(dá)8天,是我有史以來最愉快的一個(gè)假期,雖然十五那天我感冒了。 雖然我感冒了,但不能影響我的革命熱情,因?yàn)?..
    mimi播報(bào)閱讀 379評(píng)論 2 4

友情鏈接更多精彩內(nèi)容