教你如何在 Auto Layout 下設置兩個視圖之間的最小間距

jopen 9年前發布 | 13K 次閱讀 iOS開發 Objective-C開發

作者:dom, 原文鏈接 ,原文日期:2015-12-08

譯者: pmst ;校對: 星夜暮晨 ;定稿: Cee

假設現在要在某個視圖(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 單位像素。 右側圖片則剛剛相反。

untitled.bmp

這里向你提供完整代碼的 playground 下載。

譯者注:你可以在下載的 playground 下方鍵入 view 屬性,然后在右側欄點擊 Quick Look,也就是那個眼睛,就能看到如上所示的截圖了!

本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問http://swift.gg。

來自: http://swift.gg/2015/12/30/minimal-distance-to-two-views-in-auto-layout/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!