2017-08-11 101 views
0

我有一個包含標籤和一些其他元素的UIView。在某些時候,我需要切換UIView的可見性,但是我需要其他約束來保持整個結構,而不用這個UIView。我用UIView的高度約束來做到這一點 - 使它爲0.當切換回來時,UIView出現(因爲出現其他元素),但沒有標籤。標籤根本不存在。label.isHidden = false不會出現,Swift

if(vips.count == 0) { 
     meetingVIPsLabel.isHidden = true 
     meetingVipsHeight.constant = 0 
     meetingVIPsLabel.text = "" 
    } else { 
     meetingVipsHeight.constant = 92 
     meetingVIPsLabel.isHidden = false 
     meetingVIPsLabel.text = MessagesInteractor.getMeetingVIPsMessage(with: vips.count) 
    } 

隱藏的UIView之前( 「會議1 VIP」 是什麼,我需要出現): enter image description here

隱藏的UIView,並帶回來後: enter image description here

+0

檢查您是否正在更改'alpha'。同時檢查你正在設置的「文本」是否真空。請注意,您在隱藏時更改'meetingVIPsLabel.text',並在顯示時更改'hostedMeetingLabel.text'。 – Sulthan

+0

對不起,插入了其他位,但仍有此錯誤。很好的接收,但我的問題仍然存在,我編輯這裏的帖子與右段。 –

+0

停止在調試器中的應用程序,並打印標籤'文本',''alpha','框架','superview'和'hidden' 。標籤被完全刪除,或者隱藏或空白。 – Sulthan

回答

0

您需要調用layoutIfNeeded()以確保約束生效。更新限制條件後

self.view.layoutIfNeeded() 
+0

爲什麼downvoting?這實際上工作.. –

+0

噢,但然後它崩潰在這條線......所以不工作 –

+0

你能分享什麼崩潰說?如果你在ViewController類中,這應該被調用。如果你在一些UIView類中調用self.layoutIfNeeded。還要確保你在主線程上做到這一點。 –