[英]When we create Button frame within for loop then now we want to remove or clean button frame then how can do this?
[英]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。 其他視圖將自動向左移動到指定位置。 對於相等的寬度,請避免乘以寬度。
您有幾種選擇:
UIStackView
正是為此而制作的。 UICollectionView
在UICollectionView
類似於UIStackView
,但這並不是真的。 但是,它可以很好地完成工作,並且易於實現。 有時比UIStackView
容易。 NSLayoutConstraint
通過使用具有不同優先級的多個約束,以便您可以根據需要激活/停用它們並獲得所需的結果。 這種方法稍微復雜一點,因為它為您提供了對層次結構視圖的最大程度的控制和靈活性。 就像其他人已經提到的那樣,實現您正在尋找的最佳方法是使用UIStackView
。
當堆棧視圖內的UIView
的isHidden
屬性設置為true時,該堆棧視圖將隱藏該視圖並處理布局,因此您只需為堆棧視圖設置正確的約束即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.