最近写UI时遇到一个问题,现在需要一个根据内容自动改变大小的信息显示列表,大致样子类似这样其中描述词条可不断增加,外层又需要套一层Scroll View 进行滑动控制,这就要求整个列表按内容自动改变竖方向的大小。但实际在嵌套过程中遇到了问题。由于有多层的嵌套机制。存在一个问题,当这样的节点结构时,父节点TextRoot的大小是不能被控制的,因为只有子节点存在Text组件,可以自动处理大小,但是父节点的大小不能改变。又因为,在总节点上使用了Horizontal Layout Group 这个组件只能控制和遍历一层子节点,自动适应组件在textRoot节点下的text节点,textRoot不能自动改变大小,所以会出现错乱。
最终处理方法为新加一个脚本,让TextRoot父节点根据子物体控制大小改变。

ContentSizeFitter,于是去了解了一下ContentSizeFitter的源码。
ContentSizeFitter的主要流程如下:
实现了这个ILayoutElement接口的组件,会进行计算对应的min、preferred、flexible 属性(水平和竖直两个方向)。ContentSizeFitter调用在LayoutUtility工具类中的方法进行处理,对当前物体中实现了ILayoutElement接口的组件进行遍历,根据优先级大小,获取min、preferred、flexible 属性(水平和竖直两个方向)。根据ContentSizeFitter中的设置,处理当前物体设置为min、preferred、flexible 属性中的哪个属性。

实现ILayoutElement接口的组件 
Image Text Layout Group 类 
HorizontalLayoutGroup和VerticalLayoutGroup计算过程比较复杂,总之就是会遍历所有的子物体(只会遍历一层的深度)的大小,有一个选项为是否控制子物体大小,如果控制重新计算,不控制则用原有的大小,加在一起后,为总的min、preferred、flexible的大小。(之后有时间会写新的一篇文章)

浅析 ContentSizeFitter 以及 Horizontal Layout Group 嵌套问题相关推荐

  1. Unity Ugui 详解 Content Size Fitter 和 Horizontal Layout Group 的使用

    如果你希望 一个组件的宽高 可以被 里面的内容撑开 宽高自动改变大小 那么就用 Content Size Fitter 当你设置为PreferredSize的时候 会发现 你的width 或者 hei ...

  2. Unity零基础到进阶 ☀️| UGUI布局组件介绍 Vertical Layout Group、Horizontal Layout Group 和 Grid Layout Group

    目录

  3. unity之Layout Group居中显示

    推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 Layout Group 首先介绍一下Layout Group,unity的LayoutGroup分为三种, Horiz ...

  4. Unity3d Ugui 20 Grid Layout Group Aspect Ratio Fitter

    Grid Layout Group网格布局 属性 Padding:布局组内边缘偏移. Cell Size:要用于组内每个布局元素的大小. Spacing:布局子元素之间的间距. Start Corne ...

  5. css高度自动填满_Unity--自动版面(Grid Layout Group)

    Grid Layout Group 网格布局组组件将其子布局元素放置在网格中. Padding:(填充) 布局组边缘内的填充.与其他布局组不同,"网格布局组"将忽略其所包含布局元素 ...

  6. 微观平台_不再受到微观管理

    微观平台 Organisations spend vast amounts of time and resources on hiring smart, talented and self-motiv ...

  7. 深度学习去燥学习编码_您不应该学习编码的5个理由

    深度学习去燥学习编码 It seems like more and more people are catching the learn to code bug these days. If YouT ...

  8. xr企业级应用在哪里_如何在XR中保持私密

    xr企业级应用在哪里 So you're thinking of buying a surprisingly inexpensive XR headset from a notorious socia ...

  9. 程序员为何喜欢debian_程序员为何拖延以及如何停止

    程序员为何喜欢debian I love learning, yet I often struggle to learn new things. 我喜欢学习,但是我经常努力学习新事物. It's ha ...

最新文章

  1. 齐鲁师范学院计算机专业在那个校区,齐鲁师范学院有几个校区及校区地址 哪个校区最好...
  2. 【必看】这6个吓人的Linux命令,你用过吗?
  3. leetcode:Sort List(一个链表的归并排序)
  4. TypeScript 里 never 类型的用法举例
  5. UVA 11423 - Cache Simulator (树状数组)
  6. 开源 免费 java CMS - FreeCMS1.3-信息管理
  7. Weex中页面导航的实现
  8. 读《大学之路》有感---谈谈书房对于一个家庭的重要性
  9. 使用Git上传本地项目到GitHub
  10. 今天测试twm000 850的windows7 记录
  11. Python自动化完成tb喵币任务V2.0
  12. JavaScript实现人民币大小写转换
  13. 使用 @mention 功能构建 React 评论表单
  14. 机器学习第四篇----MAB(多臂老虎机)一次失败的尝试
  15. python跑神经网络_程序员深夜用Python跑神经网络,只为用中二动作关掉台灯
  16. STM32CubeMX SDIO SD卡 FATFS
  17. JVM_01 内存结构(深入理解+图解)
  18. FaceLandmark dataset Augment
  19. 全球通讯录转换outl联系人
  20. 计算机文化教程实验基础知识,《计算机文化基础》课程实验教学大纲

热门文章

  1. 国内首个基于Windows操作系统的GPU高性能计算集群研制成功
  2. 音乐正版率关键数据缺失,网易云音乐IPO胜算几何?
  3. Android设置透明状态栏,仿ios状态栏
  4. ICCV 2021 Oral | Paint Transformer - 基于笔触预测的快速油画渲染算法
  5. 残差连接(skip connect)/(residual connections)
  6. NYOJ 20 吝啬的国度
  7. 基于觅食生境选择的改进粒子群算法-附代码
  8. 关于删除一条动态的同时删除这条动态的所有评论
  9. android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide
  10. 为了庆祝五一国际劳动节的到来