2016-12-20 55 views
2

我使用三個等大小的按鈕來查看視圖。每個按鈕佔1/3視圖的一部分。當我們從視圖中刪除第三個按鈕時,我們如何增加兩個按鈕的寬度

喜歡這張圖像:

enter image description here

如果刪除/隱藏一個按鍵然後兩米寬度應同樣增加,並採取的視圖1/2部分。如果我刪除兩個按鈕,那麼一個按鈕的大小應該是相等的視圖大小。

我的問題是,它如何使用Autolayout。

+2

[自動佈局如何在視圖中隱藏1個視圖,並使用3個等寬視圖](http:// stackoverflow。com/questions/38364555/auto-layout-how-to-hide-1-view-in-a-view-with-3-equal-width-views) –

+0

你想完全移除按鈕還是隻隱藏和取消隱藏它? – Rikh

+0

我不認爲這個問題應該作爲一個重複被關閉,因爲不像鏈接的問題這個沒有指定它必須用AutoLayout,並且'UIStackView'沒有在其他問題的答案中提到。 – EmilioPelaez

回答

6

最好的選擇是使用stackView。 StackView爲添加或刪除項目提供了很多靈活性。如果您只想使用自動佈局,您可以通過將它的寬度約束連接爲IBOutlet並以編程方式更改這些值來實現它。

+0

你可能應該解釋這是如何完成的。 –

+0

是的,StackView給了這個更靈活和容易的創建。但我們如何才能使用常量來執行。請給任何建議教程或鏈接。 –

0

最好的方法是使用一個UISTACKVIEW.Place和stackview加3 buttons.You可以爲你需要

點擊堆棧view--選擇屬性檢查器中 變化堆棧視圖給予適當的佈局限制分配 - 填同樣 間距 - 0

然後後,如果隱藏任何按鈕,其它按鈕會自動在寬度

0

其他可能溶膠調整至這個問題在運行時期間被添加或移除約束是一個重量級的操作,可以af性能表現。但是,有一個更簡單的選擇。

對於您希望隱藏的視圖,請設置寬度約束。限制其他觀點與這個觀點之間的領先水平差距。

要隱藏,請將width約束的.constant更新爲0.f.其他視圖將自動向左移動以呈現位置。和寬度相同的pervoid倍頻寬..

0

您有幾種選擇:

  1. UIStackView被做正是這一點。
  2. UICollectionView以某種方式類似於UIStackView,但不是真的意味着這一點。但是,它很好地完成了這項工作,並且很容易實現。有時比UIStackView更容易。
  3. NSLayoutConstraint通過使用具有不同優先級的多個約束,以便您可以根據需要激活/停用它們並獲得所需的結果。這種方法稍微複雜一點,它可以爲您提供最高程度的控制和靈活性,覆蓋層次結構中的視圖。
0

與其他人已經提到的一樣,使用UIStackView來達到目標​​的最佳方式就是使用UIStackView

當堆棧視圖中的UIViewisHidden屬性設置爲true時,該堆棧視圖將隱藏視圖並處理佈局,因此只需要爲堆棧視圖設置正確的約束。

相關問題