1

我正在嘗試將自動佈局用於簡單的界面。當刪除視圖時刷新自動佈局

有時,根據服務器接收到的信息,我們需要刪除UIImageView(當沒有圖像顯示)。

如果我只是做[image removeFromSuperview]那麼圖片下的所有內容都將其約束應用於超級視圖的頂部而不是「商家描述」標籤。

我試過只是更新框架,但顯然這是不允許的。我試圖使用不同的優先級標籤來密碼商家描述和VIP折扣,但顯然這個選項在新版本的Xcode中沒有了。

+0

而不是刪除視圖,請爲其設置高度限制,並在您不想看到它時將其設置爲0。其餘的意見應該是相對於該圖像的底部 –

+0

@GrzegorzKrukowski在生命週期中,最好將高度約束設置爲2? – Ares

+0

有一個updateConstrains方法。 –

回答

0

您可以激活和取消激活代碼中的約束。在IB中創建兩個約束,一個用於存在圖像視圖的佈局,另一個用於沒有它的佈局。創建連接到每個約束的IBOutlet。取消選中「安裝」框,無論你認爲是不是默認:

IB constraint configuration

當您刪除的圖像來看,適當地改變約束的工作狀態:

[imageViewPresentConstraint setActive:NO]; 
[imageViewAbsentConstraint setActive:YES]; 

做反向如果圖像視圖已經恢復到視圖。 N.B.確保在所有情況下在激活之前停用,以避免有關衝突的經典日誌消息。