2014-10-02 99 views
0

我正在學習自動佈局。我目前正在添加一個簡單的約束:視圖和超視圖之間的0px頁邊距。Autolayout:爲什麼這些相同的約束有所不同?

顯然,有兩種方法來添加這個約束:

首先,點擊您的廈門國際銀行的編輯器右下方的按鈕,選擇左邊空白處,點擊加正制約,在給定的截圖: first way to add constraint

這是第一個約束屬性。它有一個16像素恆緣:
enter image description here

第二種方式中,選擇在Xcode菜單:編輯>針>引領空間上海華:
The second way

現在,我的約束有0像素,但它也能工作:視圖是根據它的父

這裏是我的第二個約束性很好地適應:
enter image description here

第一個問題:爲什麼我的第一個約束左右邊距是16px?我正在開發一個全新的項目!如果我設置了0px,則視圖周圍會有一些額外的空間!

第二個問題:這兩個約束有什麼區別?什麼是最好的方法?

謝謝

回答

1

您已經給出了答案。對超視圖的約束與對超視圖邊距的約束不同。

如果你考慮如何在代碼中形成這些約束,這可能是最簡單的。下面是屬性,您可以使用:

https://developer.apple.com/Library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/index.html#//apple_ref/c/tdef/NSLayoutAttribute

正如你所看到的,有右的和RightMargin。將子視圖的右邊緣固定到其超級視圖的右邊與將其固定到其超級視圖的RightMargin不同。

+0

我仍然想知道爲什麼這兩個菜單條目有不同的行爲,爲什麼16px ... – Martin 2014-10-02 15:43:19

+0

因爲視圖控制器視圖的左右邊距默認爲16px。但如果您喜歡的話,您可以改變它,如果當然。 – matt 2014-10-02 15:44:05

+0

他們沒有「不同的行爲」。 Superview意味着超級觀點,而不是保證金。但是在你的第一個屏幕截圖中,你檢查了「邊距」複選框,現在你鎖定邊距了。看看你面前的是什麼。你需要知道的一切都在你提供的截圖中。 – matt 2014-10-02 15:45:04

相關問題