2012-06-30 115 views
5

有時自動佈局約束會捕捉到錯誤的錨點 - 就像我想要控件錨定到上方的控件並且自動佈局約束被錨定到窗口底部一樣。有沒有辦法移動約束? ASCII藝術應該讓這個更清楚。這是我有:我可以在Interface Builder中移動自動佈局約束嗎?

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|      | 
| [x] Another checkbox | 
|  |     | 
|  | ← autolayout  | 
|  | constraint  | 
|  |     | 
+-----+------------------+ 

這就是我想要的,而不是:

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|  | ← A.C.   | 
| [x] Another checkbox | 
|      | 
|      | 
|      | 
|      | 
+------------------------+ 

我可以通過向上移動下複選框錨約束到上覆選框,但是這不是我想要的我希望垂直空間更大。 (複選框只是爲了說明,我的實際使用情況有不同的看法。)

回答

7
  1. 選擇2複選框
  2. 點擊 「H」 圖標,在界面生成器的右下角
  3. 選擇垂直間距

enter image description here


現在選擇無用的約束並刪除它:

enter image description here

+0

+1你剛纔救了我的精神錯亂。我一直在掙扎着從帳簿的佈局在Mac上學習可可在過去的幾個小時,我只是不停地讓情況變得更糟。這正是我需要解決我的問題。 – MetalMikester

1

嘗試移動下方複選框,以便它自己和上面的複選框之間有一個支撐。 然後點擊支柱並點擊右側面板中的屬性框。 在那裏,您應該能夠取消選中「標準」框並將其設置爲您想要的間距。

1

不,您不能移動約束或將其更改爲相對於其他視圖。就像David Chu所說的,你可以移動視圖直到它自動獲得你想要的那種約束,然後改變約束的值以將視圖移回到你想要的位置。但是,您也可以手動創建您想要的約束,然後刪除您不需要的自動約束(有時會遇到一些困難)。你的情況如下:

選擇2個複選框,然後使用Editor> Pin> Vertical Spacing菜單添加你想要的約束(或使用IB佈局視圖右下角的3個按鈕的中間部分得到相同的菜單)。此時不需要的自動約束應該變成多餘的,並從紫色切換到藍色。然後您可以選擇並刪除它。可以使用這些Pin和Align菜單中的項目創建每種約束。

我發現,得到你想要的約束始終是可能的,儘管它針對的Xcode增加,有時一個謎自動約束的戰鬥中找到他們爲什麼不從紫色轉變爲藍色。例如,在添加一些自定義約束後直接移動視圖,您會發現Xcode可能刪除了大部分您添加的約束並重新添加了自動約束,即使對於窗口中的其他看似隨機的視圖,也不僅僅是您感動!祝你好運。