UGUI嵌套布局組件的Control Child Size應用技巧
首先是需求描述:
1、整個界面信息需要放在一個Scroll View中,Content設置Vertical Layout Group和Content Size Fitter組件,即整體需要按豎向列表布局,自適應內容高度;
2、BaseInfo、Part、Quality、Real是單行信息;
3、BaseAttribute、ExtraAttribute、RareAttribute、Entry是多行信息,而且屬性條數和詞條數量不定,需要按條數自適應高度;
4、Desc、Story讀取配置描述,文本高度需要自適應;
顯示效果如下:


外圍Content已經設置了Content Size Fitter,子Child和孫Child再設置這個組件的話,因為刷新時機機制,導致顯示顯示不正常,應該摒棄嵌套Content Size Fitter的思路。
這個時候需要用到Layout Group的Control Child Size功能,
Vertical和Horizontal這兩個Layout Group和Grid Layout Group不同,Grid需要指定具體的寬高值控制Child尺寸,而Vertical和Horizontal勾選這個選項之后,是按自適應尺寸來控制Child尺寸,類似Content Size Fitter效果。
但是可能會懵逼的地方在于單純外層Content勾選之后,出現以下現象:

高度變成0了,Why?!到這一步我就去查百度,但是網上大部分說的比較模糊,請教朋友之后,才知道Content只控制子節點的高度,但是子節點只是一個負責管理孫節點的空節點,于是識別成0高度,那么給空節點同樣也添加布局組件,需要以下操作:
- BaseInfo:包含2個橫向節點,設置Horizontal Layout Group,勾選Control Child Size;
- Part、Quality、Realm直接是文本,不用額外管理;
- BaseAttribute、ExtraAttribute、RareAttribute、Entry:包含2個橫向節點,設置Horizontal Layout Group,勾選Control Child Size;
嵌套的AttributeList節點包含豎向列表,設置Vertical Layout Group,勾選Control Child Size;
- Desc、Story:包含2個豎向節點,設置Vertical Layout Group,勾選Control Child Size;
自此,所有節點就都受到了Control Child Size管理,能夠正常顯示,而且不需要代碼動態設置高度,實現需求!
這種方式會將內容控制成緊湊的自適應高度,按20字號大小,單行高度大概在23px,如果希望文本高度保持單行50px,則需要將每個文本節點添加Layout Element組件,設置Min Height=50,這樣的話,就不會按自適應的23px而是至少50px高度。
不過Layout Element又是另一個話題,這里便不細述了。

浙公網安備 33010602011771號