你將不得不添加和刪除「(-14分鐘)」的標籤,而不是僅僅把它隱藏或將其設置爲空。
設置22:35標籤的水平中心與KL1032標籤的水平中心對齊,但優先級稍低(比如說750)。還要設置一個約束,以便後邊距大於或等於KL1032標籤的中心,減去所需的任何微小間距。這個應該優先1000(必需)。
當「(-14分鐘)」標籤應該存在時,添加它並對其設置約束。將其領先優勢限制在22:35標籤的後沿加上您期望的間距。還要創建一個約束來將其中心與KL1032標籤的中心對齊,但將其優先級設置爲介於必需(1000)和以22:35標籤爲中心的約束之間(例如800)。佈局系統將無法居中,因爲這會迫使22:35標籤超過其要求的限制,但它會盡可能接近它。
當該標籤不應出現時,只需將其從層次結構中移除,這也將消除其約束。 22:35標籤將回到居中(因爲它可以和它「喜歡」)。
如果您願意,可以在兩個標籤都存在的情況下在NIB中進行佈局。將網點設置爲「(-14分鐘)」標籤並對其加以限制。將它們設爲strong
是因爲您將暫時從層次結構中刪除它們,但不希望它們被釋放。這樣,您的代碼就可以根據需要刪除並重新添加它們,而無需在代碼中表達約束條件。
編輯:哦,你會希望有一個約束設置「(-14分鐘)」標籤的基線等於22:35標籤的基線。您必須每次都在代碼中添加該代碼,或者在NIB中使用強大的插座進行設置,並且每次都重新添加它,就像其他代碼一樣。
編輯2:另一種方法發生在我身上。您可以在層次結構中保留「(-14分鐘)」視圖,並始終保留所有約束條件。如果不希望顯示,請將視圖設置爲隱藏,並將其中心與KL1032標籤中心之間的約束條件設置爲更大的值。絕對足夠大以允許22:35標籤以其居中的偏好位置,可能足夠大以至於不在屏幕外。
由於您不希望22:35標籤一直跟隨它,所以建立這兩個標籤之間的間距的約束應該是「大於或等於」而不是「相等」。此更改不會取決於是否顯示「(-14分鐘)」標籤。這就是該約束應該如何。
如果您確實需要顯示「(-14分鐘)」標籤,請重置嘗試將其居中置回constant
等於0的約束。另外,當然也可以取消隱藏。
這似乎與問題想要的相反。 – 2014-09-13 13:22:03
@KenThomases不,這允許佈局保持不變,即使標籤爲空。我就是這樣讀他的問題的。 – 2014-09-13 13:23:57
他希望在正確的標籤不存在/空白時更改佈局。 – 2014-09-13 13:24:15