第 25 章
Cell 尺寸自適應與動態型態
在 iOS 8 中,Apple 針對 UITableView
導入了一個新的功能,就是 Cell 尺寸的自適應功能(Self Sizing Cells)。對我來說,這是新 SDK 中最令人興奮的功能之一。在 iOS 8 以前,倘若你要在表格視圖中自動調整高度來顯示動態內容時,你需要自己計算列高。
在 iOS 11,Apple 的工程師進一步強化這個功能。目前尺寸自適應功能已經自動啟用。換句話說,標題視圖、註腳視圖以及Cell 都已經預設使用尺寸自適應功能來動態顯示內容。
雖然這個功能在 iOS 15已經啟用,不需要再做設定,我想要你了解這其中的原理。
簡而言之,以下是你在使用尺寸自適應時所需要的部分:
- 針對 Prototype cell 定義 Auto Layout 約束條件
- 指定表格視圖的
estimatedRowHeight
屬性 - 設定你表格視圖的
rowHeight
屬性為UITableViewAutomaticDimension
倘若我們在程式中表達最後一點,看起來像這樣:
tableView.estimatedRowHeight = 95.0
tableView.rowHeight = UITableView.automaticDimension
這是 iOS 15(其實自 iOS 11 已經有)為你所做的。
只要兩行程式,你便指示了表格視圖去計算 cell 的尺寸,以符合它的內容並做動態變更。這個 Cell 尺寸自適應功能會省下大量的程式與時間。你一定會喜愛上它。
下一節我們將會建立一個簡單的範例來示範 Self Sizing Cell ,學習新功能最好的方法就是使用它。除了Cell 尺寸自適應之外,我也會討論到動態型態(Dynamic Type)。動態型態是在 iOS 7 時第一次被導入。它可以讓使用者自訂文字尺寸來符合他們自己的需要。不過,只有採用動態型態的 App 才能夠因應文字的變化。
其實很鼓勵開發者採用動態型態,這可以讓使用者很彈性地變更文字大小,對於視力比較弱的使用者可以改善其體驗。因此,在稍後一節,你將學會如何在你的 App 中採用動態型態。
本文摘自《iOS 17 App程式設計進階攻略》一書。如果你想繼續閱讀和下載完整程式碼,你可以從AppCoda網站購買完整電子版,全書範例檔皆可下載。