昨天,我們的 App 第一次「活」了過來,學會了回應使用者的點擊。但你可能也發現了一個新問題:只要換個尺寸的手機,畫面上的元件就開始大亂跑!這就像我們只把家具「隨意擺放」,卻沒有把它們固定起來。
今天,我們就要來學習 iOS 的排版神技 —— Auto Layout!我們將學會為 UI 元件綁上「看不見的繩索」,也就是約束(Constraints)。你不再是告訴按鈕「待在座標 (100, 200)」,而是命令它:「永遠離頂部 20 點遠,並永遠保持在畫面正中央」。
學會了這項技巧,你的 UI 就能像被施了魔法一樣,優雅地自動適應任何螢幕尺寸!
Auto Layout 就像是幫 UI 元件「訂下規矩」的排版管家。
我們只要告訴它:
「這個 Label 要離頂部 20 點,並保持在畫面正中間」
它就會自動在不同螢幕中、不同旋轉狀態下,讓元件乖乖服從這些規則。
它能解決什麼?
Safe Area(安全區域):指在螢幕上不會被瀏海、圓角或底部 Home 指示條等系統 UI 遮擋的內容顯示區域。
在拖曳時,選單中會出現各種約束條件。以下是完整的分類列表,方便你對照使用。
這些是針對元件與畫面中「Safe Area」(安全區域)邊界之間的距離設定:
功能 | 中文 | 說明 |
---|---|---|
Leading Space to Safe Area | 對應 Safe Area 左邊距離 | 設定元件與安全區左側的距離。通常用於左右對齊。 |
Top Space to Safe Area | 對應 Safe Area 上方距離 | 設定元件與安全區上方的距離。避免與狀態列、導航列重疊。 |
Trailing Space to Safe Area | 對應 Safe Area 右邊距離 | 設定元件與安全區右側的距離。適用於保持邊距一致或避免遮蔽。 |
Bottom Space to Safe Area | 對應 Safe Area 下方距離 | 設定元件與安全區底部的距離。避免與下方元件(如 Home Indicator)衝突。 |
這些控制元件是否在安全區中置中顯示:
功能 | 中文 | 說明 |
---|---|---|
Center Horizontally in Safe Area | 水平居中於 Safe Area | 將元件在水平方向置中(X 軸),左右對稱。 |
Center Vertically in Safe Area | 垂直居中於 Safe Area | 將元件在垂直方向置中(Y 軸),上下對稱。 |
這些控制元件是否在畫面中置中顯示,或與其他元件對齊:
功能 | 中文 | 說明 |
---|---|---|
Horizontal Spacing | 水平間距 | 控制兩元件間的左右距離 |
Vertical Spacing | 垂直間距 | 控制兩元件間的上下距離 |
功能 | 中文 | 說明 |
---|---|---|
Top | 頂部對齊 | 對齊另一元件的上緣或距離上方 |
Center Vertically | 垂直居中對齊(Y軸對齊) | 垂直對齊到父元件或另一元件中間 |
First Baseline | 第一基線對齊 | 對齊文字第一行的基線(用於含文字的元件) |
Bottom | 底部對齊 | 對齊另一元件的下緣或距離下方 |
功能 | 中文 | 說明 |
---|---|---|
Leading | 左側對齊 | 對齊或控制與左側距離 |
Center Horizontally | 水平居中對齊(X軸對齊) | 水平對齊到父元件或另一元件中間 |
Trailing | 右側對齊 | 對齊或控制與右側距離 |
這些功能用來保持多個元件尺寸一致或固定元件本身的比例:
功能 | 中文 | 說明 |
---|---|---|
Equal Widths | 等寬 | 讓兩個元件具有相同寬度。 |
Equal Heights | 等高 | 讓兩個元件具有相同高度。 |
Aspect Ratio | 長寬比 | 固定元件自身的寬高比例(例如圖片保持 1:1 比例不變形)。 |
開啟 MainViewController.xib
,使用我們上次專案中的 Label
來示範。
將它大致放在畫面中間的位置(不用太精準,接下來會用 Auto Layout 調整)
按住 Control
鍵,從 Label
拖曳到 Safe Area
選擇以下兩個常用的約束條件:
當你使用 Center Horizontally 或 Center Vertically 的約束後,元件會自動對齊到安全區域的中心點。如果想讓元件稍微偏移位置,可以用以下步驟調整:
Edit
Multiplier
或 Constant
的數值參數名稱 | 說明 |
---|---|
Multiplier | 設定對齊的位置比例(例如 1 表示正中間,0.8 會稍微靠左) |
Constant | 設定位移的距離(以 pt 為單位,正數向右/下,負數向左/上) |
在使用 Auto Layout 時,記得每個元件通常需要至少 四條約束,才能讓系統正確計算它的位置與大小。這四條約束可以是:
若約束不足,Xcode 可能會出現警告,元件也可能無法穩定顯示,造成畫面亂掉或跑版。因此,設定約束時,務必確認至少有四條足夠的限制條件,讓 Auto Layout 幫你精準掌控畫面配置!
Resolve Auto Layout Issues
工具,使用自動修正功能這是我在開發過程中最常用的一種快速排版方式:
Constant
及 Multiplier
做調整位置Equal Widths
對齊畫面寬度這樣做非常快速又靈活,尤其適合初期畫面配置時使用。當然,剛開始學習建議你也可以多嘗試其他 Auto Layout 的排版方式,不同的情境會有更適合的解法!
今天,我們終於掌握了 iOS 開發中最重要的 UI 排版神技:Auto Layout!我們理解了它如何透過「約束(Constraints)」的規則,讓 App 畫面能優雅地適應各種螢幕尺寸,從此告別「跑版」的惡夢。
你不僅親手完成了第一個置中練習,也學會了「至少四條約束」的黃金法則與除錯技巧。最重要的是,你現在擁有了一份完整的約束條件字典,為未來打造複雜介面打下了堅實的基礎。掌握 Auto Layout,是你成為專業 iOS 開發者的重要一步!
恭喜你掌握了 Auto Layout 這項排版神技!有了穩固的介面骨架,我們終於可以開始為 App 增添各式各樣有趣的互動功能了。
從明天開始,我們將進入 UI 設計的下一站:認識並實作 iOS 中最常見的畫面元件!這就像是打開了一盒全新的 LEGO,裡面有各式各樣的特殊零件:你可以用 拉桿(Slider) 來調整數值、用 輸入框(TextField) 來接收文字、用 表格(TableView) 來展示長長的清單... 甚至實現畫面之間的跳轉!
準備好將你的 App 從一個靜態的畫面,變成一個充滿互動樂趣的作品了嗎?
敬請期待《Day 19|Xcode 元件教學:滑出互動感,打造 Slider 元件!》