“`html

Swift 設定 TableView Cell 高度自適應的必要性

在 iOS 開發中,使用 UITableView 時,設定 Cell 高度自適應是一個常見需求。這樣的設計能有效提升使用者體驗,讓界面更加美觀且符合不同內容的長度。在這篇文章中,我們將介紹如何使用 2025 年最新的 Swift 語法來設定 TableView Cell 的高度自適應,並提供完整的實作範例和最佳實踐。

步驟一:實現 UITableViewDelegate 的 heightForRowAt 方法

首先,我們需要在 UITableViewDelegate 中實現 heightForRowAt 方法,以計算每個 Cell 的高度。這裡我們使用了 UITableView.automaticDimension 來讓 Cell 高度自動調整。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

步驟二:實現 UITableViewDataSource 的 estimatedHeightForRowAt 方法

接下來,我們需要在 UITableViewDataSource 中實現 estimatedHeightForRowAt 方法,這個方法用來提供 Cell 的預估高度。

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

步驟三:設定 UITableView 的 rowHeight 屬性

最後,你需要在 UITableView 的設定中指定 rowHeight 屬性為 UITableView.automaticDimension

tableView.rowHeight = UITableView.automaticDimension

完整範例代碼

以下是一個完整的範例,展示如何在一個簡單的 TableView 中實現自適應 Cell 高度:

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        tableView.rowHeight = UITableView.automaticDimension
        tableView.estimatedRowHeight = 44.0 // 預設高度
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20 // 範例資料數量
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = "這是第 \(indexPath.row + 1) 行的內容,可能會有不同的長度。"
        return cell
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }
}

常見錯誤排除

若 Cell 高度未按預期自動調整,請檢查以下幾點:

  • 確保 Cell 的內容約束條件(Constraints)正確設置,以便 Auto Layout 能夠正確計算高度。
  • 確認已在 UITableView 的代理和數據源方法中正確實現了上述方法。
  • 檢查是否為 Cell 設定了固定的高度,這會影響自動調整功能。

延伸應用

除了基本的 Cell 高度自適應,開發者還可以考慮以下進階應用:

  • 結合 UICollectionView 實現更加靈活的布局。
  • 使用 SwiftUIList 組件來簡化開發流程。

Swift 設定 TableView Cell 高度自適應

Q&A(常見問題解答)

Q1: 為什麼我的 TableView Cell 高度不會自動調整?

A1: 請檢查 Cell 的 Auto Layout 約束是否設置正確,並確保沒有在 TableView 中強制設置 Cell 的高度。

Q2: 如何使用 SwiftUI 實現自適應高度的列表?

A2: 在 SwiftUI 中,可以使用 List 組件,並讓其內容自動調整高度,無需額外設定。

Q3: 在 UITableView 中使用自適應 Cell 高度會影響性能嗎?

A3: 一般來說,使用自適應高度不會顯著影響性能,但在大量資料的情況下,建議進行性能測試。

“`

Categorized in:

Tagged in:

,