2017-06-19 15 views

回答

1

如果約束是具有相對約束到它的父然後其約束將在上海華..,

而如果約束是不相對像修復寬度或高度那麼它們在視圖本身...

而背後的原因是蘋果公司設計的,它是這樣.. :)

0

Er. Khatri's answer是正確的。這是Apple公約/定義,只有他們的工程師可以肯定地回答你的問題。然而,有一個很合理的解釋,我想補充,補充定義到查看約束添加規則:


  1. 約束僅包含佈局從一個單一的視圖屬性直接添加到該視圖。

    • 尺寸約束:
      • view1.width = 50
      • view1.height = 100
    • 長寬比約束:
      • 包含從一個視圖的佈局屬性和來自上海華另一佈局屬性10個
      • view1.width = 0.5 * view1.height
  2. 約束添加至上海華。

    • 位置約束:包含佈局從兩個不同的視圖非其中是另一個的上海華屬性
      • view1.leading = view2.trailing + 8
      • view1.bottom = view2.bottom - 8
  3. 約束被添加到他們的第一個共同的超視圖。

    • 位置約束:見上文
    • 基線約束:
      • label1.baseline = label2.baseline

有兩個原因(我能想到的,或許蘋果有更多的理由):

  1. 真實性:

    寬度,高度和縱橫比內在性質的單一視圖。他們與任何其他觀點無關。所以這是有道理的,這個特定的視圖擁有這些約束。另一方面,當您將兩個視圖的位置相互關聯時,這些約束在視圖之間「共享」。目前尚不清楚哪個視圖本身應該具備這些約束條件。所以爲了避免混亂,我們需要一個可靠的規則來選擇哪些視圖作爲約束的所有者。上面的規則明確無誤。對於佈局引擎

  2. 便利:

    約束從頂部解析爲底部(即,從上海華到子視圖)。因此,當「有疑問」時,始終向視圖層次結構中較高的視圖添加約束是合理的。這對於佈局引擎也很方便,因爲當它佈置特定視圖的子視圖時,它已經具有這些約束,並且不需要詢問其子視圖的約束(大小和寬高比約束除外)。

相關問題