教你如何在 Auto Layout 下設置兩個視圖之間的最小間距
假設現在要在某個視圖(view)中放置三個子視圖(subviews)。其中兩個子視圖放置在上方,第三個視圖緊挨著它們放到下方。不過上方的兩個視圖高度不定,并且你不知道哪個更高一些。現在要求我們使用自動布局(Auto Layout)來控制下方視圖和上方視圖之間間距至少 10 單位像素。
我們該如何實現呢?實現技巧是使用不等式約束條件 (inequality) 以及設置約束優先級 (priority)。相關約束如下:
// 注意約束使用不等式 >=,以及設置優先級 leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[red(50)]-(\>=10)-[green]", options: [], metrics: nil, views: leftViews) leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[blue(100)]-(\>=10)-[green]", options: [], metrics: nil, views: leftViews) leftViewConstraints += NSLayoutConstraint.constraintsWithVisualFormat("V:[blue(100)]-(\<=10@999)-[green]", options: [], metrics: nil, views: leftViews)
上方兩個視圖與底部視圖的最小間距不能小于 10(譯者注:這里約束優先級默認是 1000)。此外藍色視圖與底部視圖的最大間距不得大于 10 ,其優先級為 999。
就是這樣!你可以看到如下方截圖所示的結果。左側圖片中,藍色視圖的高度為 100 單位像素,紅色視圖高度為 50 單位像素。 右側圖片則剛剛相反。
這里向你提供完整代碼的 playground 下載。
譯者注:你可以在下載的 playground 下方鍵入 view 屬性,然后在右側欄點擊 Quick Look,也就是那個眼睛,就能看到如上所示的截圖了!
本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問http://swift.gg。
來自: http://swift.gg/2015/12/30/minimal-distance-to-two-views-in-auto-layout/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!