一:前言

ContentSizeFitter继承自ILayoutSelfController,是调整对象自适应的组件,ContentSizeFitter不改变子物体的大小和位置,而是根据子物体(ILayoutElement)来改变自身的尺寸
ContentSizeFitter所挂载的对象上必须挂载了实现ILayoutElement接口的组件


二:源码解析

——HandleSelfFittingAlongAxis

设置对象的位置和大小
与HorizontalLayoutGroup、VerticalLayoutGroup、GridLayoutGroup不同在于它没有继承ILayoutElement接口,所以没有计算对象属性(CalculateLayoutInputHorizontal和CalculateLayoutInputVertical)的过程,而对象属性直接通过LayoutUtility.GetMinSize与LayoutUtility.GetPreferredSize获取,获取时会从对象自身查找ILayoutElement,获取到minWidth与preferredWidth,如果不存在则返回默认值0

——SetLayoutHorizontal、SetLayoutVertical

——SetLayoutHorizontal、SetLayoutVertical:实现了设置自身的位置和大小,调用了HandleSelfFittingAlongAxis方法


三:ContentSizeFitter的坑

给对象身上挂载ContentSizeFitter组件后设置PreferredSize后立即获取rectTransform.sizeDelte或rectTransform.rect.size还是之前的值,下一帧后获取才是真实的size,可以使用以下方法执行一次更新方法再去获取rect

//第一种
GetComponent<ContentSizeFitter>().SetLayoutHorizontal();
//第二种
LayoutRebuilder.ForceRebuildLayoutImmediate(txt.rectTransform);

UGUI源码解析——ContentSizeFitter相关推荐

  1. Unity中的UGUI源码解析之事件系统(2)-EventSystem组件

    Unity中的UGUI源码解析之事件系统(2)-EventSystem组件 今天介绍我们的第一个主角: EventSystem. EventSystem在整个事件系统中处于中心, 相当于事件系统的管理 ...

  2. Unity中的UGUI源码解析之事件系统(8)-输入模块(中)

    Unity中的UGUI源码解析之事件系统(8)-输入模块(中) 接上一篇文章, 继续介绍输入模块. Unity中主要处理的是指针事件, 也就是在2d平面上跟踪指针设备输入坐标的的事件, 这一类事件有鼠 ...

  3. Unity中的UGUI源码解析之事件系统(9)-输入模块(下)

    Unity中的UGUI源码解析之事件系统(9)-输入模块(下) 接上一篇文章, 继续介绍输入模块. StandaloneInputModule类是上一篇文章介绍的抽象类PointerInputModu ...

  4. Unity中的UGUI源码解析之图形对象(Graphic)(2)-ICanvasElement

    Unity中的UGUI源码解析之图形对象(Graphic)(2)-ICanvasElement 在上一篇文章中, 我们对整个Graphic部分做了概述, 这篇文章我们介绍ICanvasElement和 ...

  5. Unity中的UGUI源码解析之事件系统(6)-RayCaster(下)

    Unity中的UGUI源码解析之事件系统(6)-RayCaster(下) 接上一篇文章, 继续介绍投射器. GraphicRaycaster GraphicRaycaster继承于BaseRaycas ...

  6. Unity中的UGUI源码解析之事件系统(3)-EventData

    Unity中的UGUI源码解析之事件系统(3)-EventData 为了在事件系统中传递数据, Unity提供了EventData相关的类来封装这一类数据. 了解这些结构有助于我们对后面模块的学习. ...

  7. UGUI源码解析——LayoutElement

    一:前言 继承了ILayoutElement和ILayoutIgnorer接口,作为布局元素组件 挂载了Layout Element组件的对象,布局并不会生效,它是受到实现了布局组的控制(Horizo ...

  8. UGUI源码解析(二十二)ContentSizeFitter

    ContentSizeFitter类 继承了UIBehaviour, ILayoutSelfController,继承ILayoutSelfController,需要重写SetLayoutHorizo ...

  9. UGUI源码解析(LayoutSystem布局系统)

    Runtime类图 ILayoutElement 布局元素接口,是布局的接收方.如果某个类实现了这个接口,那么就会在应用布局时自动完成对它的位置信息及大小的布局计算. ILayoutControlle ...

最新文章

  1. 解读Go语言的2018:怎么就在中国火成这样了?
  2. 如何改变iframe滚动条的样式?
  3. mongodb - 前端form表单数据传输,在保存和清除的数据格式的处理程序的 - 非递归...
  4. YUIDoc的使用方法小结
  5. cookie的设置和获取
  6. 面试必谈的哈希,.Net 程序员温故而知新
  7. Redis之内存分析
  8. 如何在VMware软件上安装Red hat(红帽)Linux6.9操作系统
  9. 【elasticsearch】FileAlreadyExistsException:/home/elasticsearch-6.8.0/config/elasticsearch.keysto
  10. 最短路径(二维矩阵)
  11. java的反射机制(第二篇)
  12. 飞秋(FeiQ)常用问题解答,
  13. C++定时器和时间轮
  14. android微信朋友圈图片查看器,iOS仿微信朋友圈图片查看器
  15. 动易cms .net版本后台拿shell
  16. python return break_Python基础:return和break的不同
  17. 05无人机动态模型(姿态表示与控制理论)2020-08-15
  18. 简单几步教你如何看k线图图解
  19. [洪流学堂]Hololens开发:Unity3d与Visual Studio最佳实践
  20. html图片旋转3种方式—— CSS3 transform

热门文章

  1. 90 后 CTO 如何成为国内首位女性 Apache Member?
  2. 开源100天,OneFlow送上“百天大礼包”:深度学习框架如何进行性能优化?
  3. 猜数字游戏(C语言)
  4. Android 听筒模式和扬声器模式切换的 实现
  5. 若依前后端分离版:增加新的登录接口,用于小程序或者APP获取token,并使用若依的验证方法
  6. 墨者学院tomcat后台弱口令漏洞利用
  7. 部署网页到华为云服务器,把网页部署到云服务器
  8. COSELF 次元秀场伦敦时装周预告 #虚拟时尚
  9. 1个月拿下7个offer! 5分钟掌握81个数学模型,小白也能逆袭数据分析师!
  10. 简单测试服务器磁盘读写速度