首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

iOS UITableView 下拉刷新標題誤顯示於 Cell 下方:UIRefreshControl 佈局層級問題

     編輯:程式設計疑難解答

現象分析

UIRefreshControl 內部的標籤(如「下拉刷新」)屬於其子視圖。當 UITableView 內容較少(不滿一螢幕)時,UIRefreshControl 的 frame 可能延伸至可見區域,導致標籤覆蓋在最後一個 Cell 上方。

解決方案

  1. 確保 TableView 填滿螢幕:在 Storyboard/XIB 中設定 Constraints 使 TableView 上下左右貼齊 Safe Area,內容不足時自動留白,RefreshControl 自然藏在頂部可見區外。
  2. 設定 backgroundColor:給 TableView 設定背景色(如白色),RefreshControl 背景預設透明,標籤不會「穿透」顯示在 Cell 之上。
    tableView.backgroundColor = .white
    refreshControl?.backgroundColor = .clear // 或同色
    
  3. 自訂 RefreshControl:繼承 UIRefreshControl 覆寫 layoutSubviews 強制調整標籤 frame,或直接使用第三方庫(如 MJRefresh)完美解決各種邊界情況。
  4. iOS 13+ 新 API:UIRefreshControl 支援 frame 自訂,可在 scrollViewDidScroll 中動態修正位置。

核心原則

RefreshControl 設計初衷為「隱藏在內容上方」,**前提是 ScrollView 內容高度 ≥ 視口高度**。若內容過少,務必補齊佈局或背景色遮擋。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved