2016-11-23 51 views
3

我不確定是否正確理解UIStackView。我有一個UIStackViewUITableViewCell。它包含3 UILabel並設置爲對齊和分配填充。iOS水平UIStackView帶有3個標籤 - 第一個標籤將其他標籤推出視線

當我的第一個標籤文本不是很長時,它看起來都很好。第二個和第三個標籤佔用儘可能多的空間,並且它們對齊到右側。第一個標籤佔據了空間的其餘部分。

但是,當第一個標籤包含大量文本時,會將其他兩個標籤推出可見區域。我需要做些什麼才能確保第二個和第三個標籤始終可見,並且需要佔用足夠的空間來顯示其內容。第一個標籤應始終佔用的可用空間的其餘部分,然後截斷其與文本「...」

這是我的故事板配置:

UIStackView configuration

這是怎麼了結果如下TableView中:

UIStackView result in UITableView

+0

什麼是對的約束非常正確的堆棧視圖設置爲? – AMAN77

+0

UIStackView有4個約束,它們都被設置爲超視圖邊距 – xxtesaxx

回答

5

我試着在這裏提到的其他解決方案,發現他們是困難或不切實際的。我不想以編程方式設置和更改佈局約束,所以我繼續玩弄值。最後,我找到了一個非常簡單的解決方案,它正是我想要的。

我所要做的只是設置「內容壓縮阻力優先級」在我的第一個標籤上更低。第二和第三個標籤有750個,而且它們對於「內容擁抱優先級」有251和252,而第一個標籤的值爲749和250.這給了我完全我想要的結果。

謝謝你們。有時候我覺得在我問這裏之後,我可以更快地找到解決問題的方法。我希望我的回答能夠幫助未來的其他人。

此: enter image description here

給了我這個結果(請注意,我設置「是否隱藏」爲true第二和第三標籤上的第三排): enter image description here

0

你可以考慮直接將那些3次到內容查看,而不是使用UIStackView,並設置第一個標籤TRA iling到秒

+0

我嘗試過,但是當我將第二個和/或第三個標籤的isHidden屬性設置爲true時,第一個標籤不佔用剩餘的空間當我使用UIStackView時,它會自動佔用剩餘的空間,但也許我只是錯誤地配置了我的LayoutConstraints ...我不知何故希望UIStackView類似於Android中的LinearLayout – xxtesaxx

+0

當您設置隱藏的正確視圖時,同時更改代碼的第一個尾隨限制。 –

+0

說實話,這聽起來不必要的複雜 – xxtesaxx

0

爲什麼即使使用stackview?只需要2個標籤和一個imageview,相應地設置你想要的大小和約束。

+0

如果我希望我的第一個標籤佔用儘可能多的空間,並且第二個第三個標籤佔用儘可能多的空間,並在每個標籤之間加上一個邊距。另外,當我隱藏第二個和/或第三個標籤時,我希望第一個標籤佔用UITableViewCell上的所有可用空間。你知道如何做到這一點? – xxtesaxx

+0

如果您想隱藏和調整尺寸,您需要以編程方式調整約束。否則,您需要將約束值設置爲小於/大於而不是平等,以便它們可以進行調整。有時甚至可能需要調整可調整優先級的較低優先級,以便它們可以更改而不是較高的優先級。 – AMAN77

+0

更改代碼中的約束是我想避免的事情之一:) – xxtesaxx