2017-11-25 407 views
0

剛開始在Xcode中開發iOS應用程序。Xcode Storyboard - 帶多標籤標籤的多堆棧視圖

Storyboard我有8套Labels需要放在水平/垂直Stack Views裏面。其中之一是多行Label即行設置爲2和文本有插入換行符Ctrl + 輸入Eight Labels with one being multiline

我想達到的目標是一樣的東西(更多的概念圖的不是視一眼):

+---------------Stack View+1-(100%)-------------------+ 
| +--Stack View 2-(50%)-+ | +---Stack View 3-(50%)--+ | 
| |Label 1    | | | +--Stack+View 4-----+ | | 
| +---------------------+ | | |Label 3|Label 4 | | | 
| |Label 2    | | | +-------+-----------+ | | 
| |Multiline   | | +-----------------------+ | 
| +---------------------+ | | +--Stack+View 5-----+ | | 
|       | | |Label 5|Label 6 | | | 
|       | | +-------+-----------+ | | 
|       | +-----------------------+ | 
|       | | +--Stack+View 6-----+ | | 
|       | | |Label 7|Label 8 | | | 
|       | | +-------+-----------+ | | 
|       | +-----------------------+ | 
+-------------------------+---------------------------+ 

Stack View 1應儘可能寬屏幕。 Stack Views23應該展開以填充屏幕寬度的一半。兩者都應該相應擴大。 Labels468應該擴大,以填補Stack View3剩餘寬度,而357應該只有足夠寬以適應文本。

我將使用約束到最外面的水平Stack View擁抱邊緣。

將單行Labels添加到Stack Views並且甚至將這些Stack Views添加到Stack View按預期工作。 Some single line Labels added to Stack Views

但是添加一行Label和多LabelStack View通向Stack View成爲zerowidthSingle line and multiline Labels added to a Stack View

添加這種垂直Stack View另一個Stack View使得極寬width的新新Stack ViewStack Views added to another Stack View

如果沒有多行Label也按預期工作。如何通過多行Label實現我的預期佈局?

我試過對Stack Views設置約束,但沒有我已經嘗試似乎工作。

編輯:我在這裏找到了解決方案:Multiline label in UIStackView。我的問題是沒有多個Labels(我正在尋找更早),而是多行Label。在添加到Stack View之前,將多行Label嵌入View內解決了此問題。

+0

你能分享你的故事板嗎? –

回答

1

最外面的堆棧視圖需要3個約束,頂部,前導和尾隨。它會從contentSize中推斷出高度約束。

您將需要在substackviews上設置水平內容擁抱和水平內容壓縮值,以便最外層的堆疊視圖知道哪個堆疊壓縮/展開,如果它太少/太多空間(除非您選擇的分配方法不同於填充,如同等大小)。

您需要爲具有多個標籤的堆疊視圖執行相同的操作。您還應該正確設置標籤行爲(例如自動換行,縮小到合適,numberOfLines等)。

+0

嘗試設置約束沒有運氣... 具體到我的情況,會是什麼序列? – Kanchu

+0

這些都是正確的約束。您是否爲每個子視圖設置了水平內容擁抱和內容壓縮?我不能告訴你在這裏使用什麼值,因爲我不知道你的意圖是什麼,就像標籤寬度一樣。當您使用堆棧視圖時,您需要具有1)固定比例的視圖或間距,或者2)當空間或多或少有空間時,元素將如何收縮和展開的想法,以便您可以相應地設置內容屬性。 –

+0

在添加到「StackView」之前,在'View'中嵌入多行'Label'解決了這個問題。 – Kanchu