簡體   English   中英

iOS自動布局約束刷新

[英]iOS autolayout constraints refresh

主要問題:我在另一個下面有三個標簽(label1,label2,label3)。 如果在運行時將label3設置為隱藏或從超級視圖中刪除,如何將label3對准label1以下。

初始視圖:

Label1
vertical spacing 
Label2
vertical spacing 
Label3

行動:

set Label2.hidden = yes;

輸出:

Label1
vertical spacing
Label3

我嘗試過的是應用垂直間距約束:

  1. 在label1和label2之間,具有某些優先級
  2. 在具有第3個約束的高優先級的label2和label3之間
  3. 在label1和label3之間,優先級最低

現在,當我刪除label2時,應該如何刷新約束,或者應該在隱藏label2時跟蹤所有約束並刪除第二約束?

一種解決方案是更改label2的高度限制,使其為零,然后刷新限制,以使所有內容向上移動。 您必須為該變量設置屬性,並使用+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

幾個提示:

  • 確保從標簽而不是標簽的超級視圖中刪除,更改和重新添加約束。
  • 您可以將所有相同的值用於新約束的現有約束,當然,常數為0除外。

祝好運!

當將其設置為隱藏時,為什么不只將label3的框架更改為等於label2?

因此添加Label3.frame = Label2.frame; Label2.hidden = YES; 反之亦然。

暫無
暫無

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

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