2014-03-26 36 views
7

我一直在努力通過Matt Nueberg的編程iOS 7書籍,並且一直在努力理解約束方向。在該書的第28頁上,在multiplier, constant部分,作者聲明:關於iOS約束方向的迷惑

第一個屬性設置爲結果。

所以我讀這一點,方法是,當有兩個項約束,第1項根據項目的值2.

所以我有一個視圖和子視圖(導出或依賴按鈕),我想水平居中按鈕。所以我安排我的觀點和按鈕,然後按住Ctrl拖動從按鈕到父視圖:

enter image description here

,並選擇Center Horizontally

enter image description here

那麼,如果我選擇約束雖然,我在屬性檢查器右側看到以下內容:

enter image description here

這將超級視圖顯示爲項目1,將按鈕顯示爲項目2.這是否意味着它會嘗試調整超級視圖的中心以匹配按鈕的中心?那不會是我想要的。還是我誤解了第1項和第2項的含義?或者這是否意味着我做了控制 - 向後拖動,你應該像從前那樣從依賴拖動到依賴,而不是從屬到依賴?

我假設訂單確實是的問題,也就是說,它是第1項,哪一項是第2項。因爲有一個菜單選項可以將兩者交換。如果它只是一個解決者而不偏好調整的內容,那就沒有必要。

回答

3

您確實以正確的方式拖動關聯(這就是爲什麼菜單選項列出centre in container)。

第一項是應用約束的項目。如果要將視圖置於其容器中,則約束將應用於容器,而不是子視圖。

假設您正在應用約束將視圖的頂部鏈接到頂部佈局指南的底部。在這種情況下,約束條件適用於視圖,所以它是項目1,佈局指南是項目2.

引擎只是一個求解器,但在某些情況下,順序很重要。如果2個項目被標記爲相等,那麼哪個是第一項並不重要。但是,如果約束有一個乘數,那麼順序就很重要 - 就像一個長寬比約束,其中順序決定了什麼被用作寬度和什麼是高度。