簡體   English   中英

從視圖中刪除第三個按鈕時如何增加兩個按鈕的寬度

[英]How we can increase width of two button when we remove third button from view

我有三個大小相等的按鈕。 每個按鈕占視圖的1/3。

喜歡這張圖片:

在此處輸入圖片說明

如果我刪除/隱藏一個按鈕,則兩個按鈕的寬度應相等地增加,並占據1/2的視角。 如果我刪除兩個按鈕,則一個按鈕的大小應等於視圖的大小。

我的問題是,如何使用自動版式。

最好的選擇是使用stackView。 StackView在添加或刪除項目方面具有很大的靈活性。 如果只希望使用自動布局,則可以通過將其寬度約束作為IBOutlet連接並以編程方式更改值來實現。

最好的方法是使用UISTACKVIEW。放置一個堆棧視圖並添加3個按鈕。您可以根據需要為堆棧視圖提供適當的布局約束

單擊堆棧視圖-選擇屬性檢查器更改分布-等距填充--0

然后,如果您隱藏任何按鈕,其他按鈕的寬度將自動調整

解決此問題的其他可能辦法是,在運行時添加或刪除約束是一項重量級的操作,可能會影響性能。 但是,有一個更簡單的選擇。

對於要隱藏的視圖,設置寬度約束。 將其他視圖限制在該視圖的前導水平間隙處。

若要隱藏,請將寬度約束的.constant更新為0.f。 其他視圖將自動向左移動到指定位置。 對於相等的寬度,請避免乘以寬度。

您有幾種選擇:

  1. UIStackView正是為此而制作的。
  2. UICollectionViewUICollectionView類似於UIStackView ,但這並不是真的。 但是,它可以很好地完成工作,並且易於實現。 有時比UIStackView容易。
  3. NSLayoutConstraint通過使用具有不同優先級的多個約束,以便您可以根據需要激活/停用它們並獲得所需的結果。 這種方法稍微復雜一點,因為它為您提供了對層次結構視圖的最大程度的控制和靈活性。

就像其他人已經提到的那樣,實現您正在尋找的最佳方法是使用UIStackView

當堆棧視圖內的UIViewisHidden屬性設置為true時,該堆棧視圖將隱藏該視圖並處理布局,因此您只需為堆棧視圖設置正確的約束即可。

暫無
暫無

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

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