UITableView Footer 高度不自動撐開?用 Auto Layout + StackView 的正確做法 在專案中,我們常會在 UITableView 的底部放一個 「載入更多」區塊 (footer),用來顯示以下幾種狀態: 🔁 載入更多按鈕 ⏳ 載入中 Indicator ⚠️ 重新載入按鈕 ✅ 已載入完畢的訊息 聽起來很簡單,但實作上卻踩到一個常見的坑 —— UITableView Footer 的高度不會自動撐開! 🧩 問題背景 我實作了一個自訂的 footer view: LoadMoreFooterView ,結構大致如下: class LoadMoreFooterView: UIView { enum State { case loadMore case loading case retry case completed case completedWithHistory case hidden } private lazy var stackView: UIStackView = { let stack = UIStackView(arrangedSubviews: [ loadingIndicator, loadMoreButton, retryButton, completedLabel, historyButton ]) stack.axis = .vertical stack.alignment = .center stack.spacing = 12 stack.distribution = .fill return stack }() // ... } stackView 內有五種元件,但同時間只會顯示其中一種: switch currentState { case .load...