2017-10-06 68 views
0

我使用UIStackViews在最新的Xcode,佈局如下所列:基於屏幕高度改變UIStackView項目的高度

文本標籤
選擇器(1分量)
文本標籤
選擇器(1成分)
文本標籤
選取器(4個組分)
分段控制(3段)

我有以下UI約束TS:

StackViewTop = SafeAreaTop + 8
StackViewLeading = SafeAreaLeading + 8
StackViewTrailing = SafeAreaTrailing - 8
Picker_1 = 96PX
Picker_2 = Picker_1身高
Picker_3 = Picker_2身高

使用固有尺寸對於組件(除了我設置爲96px的3個拾取器),所有東西都適合iPhone SE(568px),但拾取器相當短。在任何其他設備上,有更多的垂直空間使撿拾器更高。

我希望在有垂直空間時,三位撿拾者將他們的身高增加到他們的固有身高;我無法在界面生成器中找到正確的設置組合來完成此項工作。有沒有辦法做到這一點?

這個問題的第二部分是,如果屏幕夠寬,我希望堆棧視圖的寬度被限制(可能爲512),並居中。

+0

你到目前爲止試過了什麼?你有什麼限制,爲什麼他們不工作? –

回答

1

說到問題的第一部分。

這是你應該如何配置你的堆棧視圖。除了你所做的之外,我還會添加一個大於或等於符號的底部約束。它不會讓棧視圖超出界限。

StackView configuration

更新

layout考慮看看後,我改變了解決一點點。

  • 拾取器的高度平等配置與您所做的相同。
  • 頂部選取器的高度限制大於或等於96.如果有足夠的空間,它會讓自動佈局引擎增加它的大小。
  • 所有標籤和段控件都有一個垂直內容 壓縮阻力優先級設置爲1000(必需)。
  • 頂級採摘器的垂直內容壓縮阻力爲 ,優先級設置爲250(低)。

你可以在這個GitHub repository找到我的實現。
這是結果。

enter image description here

+0

卡米爾,感謝您的參與,我一直在玩壓縮阻力。您所建議的設置仍然不會滿足我期待的要求。如果有問題,我正在運行Xcode 9.1 Beta。

拾取器沒有變得更高。

這裏是我所得到的 ![畫面](https://www.dropbox.com/s/8ov5hh4c6jtot0e/Screenshot%202017-10-07%2008.10.18.png?dl=0) –

+0

大衛,我幾乎複製了您的佈局在側面項目和Xcode 9(穩定)它看起來像這[截圖](https://raw.githubusercontent.com/kamil-szostakowski/stack-overflow/master/stackview-pickers/ StackOverflow的/ Screenshot.png)。我把它推到[GitHub](https://github.com/kamil-szostakowski/stack-overflow/tree/master/stackview-pickers/StackOverflow),所以請隨時去看看。 –

+0

謝謝,我想出了我的問題。我隱藏了主StackView的一部分,並且有一個將大小拉到0的約束。 –