在使用Text 和 Content Size Fitter 还有Layout进行布局的时候,如果设计到多承嵌套往往会懵逼,比如我们需要做一套向下面的UI
最外面有排序,Content里面的Text 内容不确定,需要自适应。
这时候很容向到的预制体方案是
Scroll View
--Viewport
----Content[Content Size Fitter]Vertical Fit: Preferred Size[Vertical Layout Group]Child Force Expand: W
------Prefab[Vertical Layout Group]Child Force Expand: W
------TMP[Content Size Fitter]Vertical Fit: Preferred Size
TMP 挂上Content Size Fitter自适应,最外层也有自适应这时候Content Size Fitter Componment救护有警告
但是我们要的效果好像也实现了!!
但是,这是有问题的
这样实现经常在需要重新进行layout的时候会发生排版错误,尽管可以通过,在代码中主动使用一些比较笨拙的方法解决,如SetActive(false)物体之后再SetActive(true),这样排版就正常了,但是显然这是不合理的,而且Unity也给出了警告。所以怎么达到我们想要的效果呢
设置如下:
Scroll View
--Viewport
----Content[Content Size Fitter]Vertical Fit: Preferred Size[Vertical Layout Group]Control Child Size: WChild Force Expand: W
------Prefab[Vertical Layout Group]Control Child Size: WChild Force Expand: W
--------TMP
对比上面,就是在TMP这个Gameobject上面不再挂载Content Size Fitter这个脚本,而是在TMP的父节点同时开启Layout Group的**:Control Child Size、Child Force Expand**这两个属性,就可以达到TMP自动扩展同时控制外层的效果。
光从Control Child Size、Child Force Expand这两个变量的解释来说,很难想到这两个属性同时开启会有这样的效果,有兴趣的可以去研究一下源码。