簡體   English   中英

是否可以在Interface Builder中使用“自動布局”來放置視圖,以便如果標簽為空,則其他視圖將不會保留該空間?

[英]Is it possible to position views with Auto Layout in Interface Builder so that if a label is empty the other views will not keep the space?

我有一個UIView我想在Interface Builder中使用“自動布局”進行定位,並且該視圖包含多個標簽。 這是嘗試的文本表示形式:

            |
-- First label with some text -------------------
            |
-- Second label that may not have text in it ----
            |
-- Third label with some text -------------------
            |

它基本上具有三個標簽,它們之間的距離大約為20pt,邊緣的距離為20pt。

但是,這就是問題所在,第二個標簽通常根本沒有文字。 它可能是視圖可能具有的可選的額外描述。

是否可以沿“上面的位置,但如果不存在第二個標簽,則在第一個和第三個標簽之間放置20pt的間距”這樣的方式說些什么。 我要確保第二個標簽為空時沒有奇數間隙。

您需要從超級視圖中刪除該第二個標簽,以使其約束消失。 您可以在第三個和第一個標簽之間添加一個較低優先級的約束,以在沒有第二個標簽的情況下為它們提供所需的間距。 在代碼中,您將需要檢查第二個功能是否沒有文本,如果是,則將其從其超級視圖中刪除。 這將導致較低優先級約束得到滿足,並向上移動第三個標簽。

編輯后:

另一種不刪除任何內容的方法是首先使第三和第一標簽之間的垂直間距約束,而不是第三和第二標簽之間的垂直間距約束。 將IBOutlet設置為該約束,如果第二個標簽沒有文本,則在代碼中更改其常數值。 第二個標簽仍將存在,但第三個標簽將位於其頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM