2013-06-21 66 views
0

當用另一個太陽視圖交換子視圖時,是否需要重新應用約束? 是否需要刪除適用於已刪除視圖的約束條件?Autolay視圖交換

還是應該自動持續?

回答

1

約束是「視圖的一部分」。當你刪除一個視圖(使用removeFromSuperview)時,他們會保留這個視圖,只要視圖本身沒有被釋放。然後,您可以再次安全地添加視圖,並且約束將處理定位。

將其與視圖的框架進行比較:即使從超級視圖中刪除視圖,框架也會保持不變。當您將視圖添加爲子視圖時,它將處於與之前完全相同的位置。

所以,要回答你的問題:當你用另一個視圖「交換」視圖時,新視圖不會有任何約束。這是行不通的:

[newView addConstraints:[oldView constraints]]; 

這將導致「視圖沒有層次」的錯誤,因爲約束綁oldView

+0

因此,我們不應該嘗試從視圖「複製」約束到替換視圖...?我仍然試圖饒恕一個約束包含的東西。我懷疑這個API最終會變得更好。但是,如果我理解正確,一個約束與一個或兩個視圖對象的關係緊密結合。 – uchuugaka

+0

沒有運氣,你說的加回來和框架是一樣的。事實上,我得到一個零框架。 – uchuugaka

+0

所以實際上,當我重新添加子視圖時,它不會出現。我一定做錯了什麼。 – uchuugaka