簡體   English   中英

從Superview(Autolayout)以編程方式刪除視圖后更新約束/幀

[英]Updating Constraints/Frames After a View is Programmatically Removed from Superview (Autolayout)

我在IB中使用Autolayout。 我的屏幕布局如下所示:

+-----------------+
| +--+ +--+ +--+  |
| |  | |  | |  |  |
| |  | |  | |  |  |
| |1 | |2 | |3 |  |
| |  | |  | |  |  |
| |  | |  | |  |  |
| +--+ +--+ +--+  |
+-----------------+

我的目標是創建一個靈活的動態視圖。 每當從視圖中移除其中一個中心框([object removeFromSuperview])時,我希望更新約束,在所有對象之間保持一致的空間。

例如,刪除中心對象后,視圖應更新如下:

+-----------------+
| +--+ +--+       |
| |  | |  |       |
| |  | |  |       |
| |1 | |3 |       |
| |  | |  |       |
| |  | |  |       |
| +--+ +--+       |
+-----------------+

目前我有大小限制,底部空間限制和領先的空間限制 - 所有都是統一的。

在調用removeFromSuperview后,我嘗試調用layoutIfNeeded,updateConstraints等。 沒有效果。 物體只是保持原樣。

這甚至可以實現嗎?

您可能在視圖23之間有間距約束。

刪除視圖2 ,必須在視圖13之間創建新約束。

如果視圖的數量是真正動態的,並且每個視圖的大小都是一致的,那么您應該使用UICollectionView

如果您只有這3個視圖,則可以在1和3之間創建水平間距約束。編輯它以在刪除2后為其提供所需的值,並將其優先級更改為小於1000,如900.所以,3將對1和2都有一個間距約束,但是1到2將優先,直到刪除視圖2。 如果您有超過3個視圖,它會變得有點復雜,但您可以使用類似的方法。

暫無
暫無

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

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