一:前言

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. 《松本行弘的程序世界》中文版原作者序
  2. ListView.getChildCount() 详解
  3. Don‘t support broadcast for binaryOp,
  4. DIV水平方向居中的几种方法
  5. DIV+CSS布局,第五课,DOCTYPE的选择,零起点细说网站制作
  6. 福师《计算机应用基础》期末考试,21年2月福师《计算机应用基础》期末考试A卷答案...
  7. linux部署的java应用,浏览器访问时,报域名解析错误
  8. 鉴于最近想找女友的码农很多,特此提醒
  9. 苹果手机怎么在照片上添加文字_手机照片如何添加花样文字?原来方法这么简单!...
  10. JavaScript学习总结(15)——十大经典排序算法的JS版
  11. 第十五回(二):文会内战平分秋色 树下阔论使坏心焦【林大帅作品】
  12. 【转】PLI是什么以及怎么用
  13. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控
  14. django.forms生成HTML,如何修改Django Form生成表单的样式
  15. ff14个服务器位置,新人求推荐个服务器
  16. 登陆界面万能密码绕过
  17. 珊瑚--shopee平台提现流程
  18. SpaceX星链技术取代不了5G,但会让打仗变成打游戏
  19. IDEA社区版安装与概述
  20. Open judge 1.8.3

热门文章

  1. 职场健康:大脑20个已知秘密[转]
  2. cf-1327F. AND Segments
  3. 软件测试的正向思维,反向思维
  4. C++中前置++,后置++,+,左移运算重载符详细介绍
  5. 用Java给您的图片瘦身之Thumbnailator技术
  6. 高通QCM6125的LK部分(uefi/xbl)编译
  7. 排线颜色及排序视觉检测系统
  8. 【图像超分辨率重建】——HAN论文精读笔记
  9. 图像合成:Multi-scale Image Harmonization
  10. 苹果xr配置_定了!苹果发布会9月11日