EUI库 - 自动布局
自适应流式布局 |
width="100%"
top left right
horizontalCenter=0
|
失效验证机制 |
这些异步过程都封装好了,我们只需要关注那一对方法:
invalidateProperties() 和 commitProperties() ,前者标记属性失效,后者应用失效的属性
|
一个是测量验证
invalidateSize() 和 measure()
一个是布局验证。
invalidateDisplayList() 和 updateDisplayList()
这两组什么时候用呢
|
|
如果你希望你自定义的组件像框架里的标准组件一样,能加入自动布局体系,就必须要同时复写measure()和updateDisplayList()这两个方法 | |
Group把自己的measure()方法交给了layout.measure()去实现,updateDisplayList()交给了layout.updateDisplayList()去实现。也就是把具体的布局方式解耦了出来,成了独立的一个LayoutBase类。这样所有的容器都可以采用Group+LayoutBase的组合的方式,为自己设置任意的布局。 | |
解决异步问题 |
失效验证机制能够很好的确保自动布局的性能,但是却会带来新的异步问题,大部分情况下我们并不会感受到失效验证的异步存在,因为它总是在本帧屏幕刷新前验证失效列表的,只有小部分在验证失效过程中又产生了新失效的情况,才会延迟到下一帧去处理。这种情况会导致的结果通常就是在初始化面板时会闪一下。解决这个问题有好几种方案,可以一开始将面板添加到显示列表时设置visible为false,延迟一段时间后再显示它。我们这里再讨论另一种方案,提前处理失效验证:
还有一种使用情景,不过很少会遇到,就是我们给一个组件设置了自动布局属性,比如
2.调用组件父级容器的
validateNow() 方法,这里请务必注意是"父级容器"的validateNow()方法,不是自身的,因为组件的布局是由父级容器决定的。
|
自动布局调试 | includeInLayout 指定此组件是否包含在父容器的布局中 |
explicitWidth,explicitHeight | 所以这两个属性的作用就是保存你显式设置的值 |
)maxWidth,minWidth,maxHeight,minHeight | )maxWidth,minWidth,maxHeight,minHeight:最大和最小尺寸。这里要注意:它们同时影响测量和布局的结果。measure()方法执行完会对measuredWidth,measuredHeight赋值一次。然后交给UIComponent里的validteSize()方法,再次规范测量结果。这时候就根据这四个值来规范的。最终确定measuredWidth,measuredHeight的值。布局时同理。 |
width height | 布局设置的值 > 显式设置的值 > 测量的值 |
measuredWidth,measuredHeight |
每个组件measure()方法执行的最终结果就是对这两个属性赋值
它们只记录测量结果
|
)preferredWidth,preferredHeight | 首选宽高,这两个值通常在measure()方法中被调用。只是个便捷属性,按照explicitWidth,explicitHeight > measuredWidth,measuredHeight的优先级返回值。布局类在measure()方法中,调用子项的这个属性,来获取子项的测量结果。累加到自身的测量结果上。注意这个值已经包含旋转和缩放的值,且返回值永远为正数。 |
)layoutBoundsWidth,layoutBoundsHeight: | 布局宽高,这两个值通常在updateDisplayList()方法中被调用。也是个便捷属性。按照 布局设置的宽高 > explicitWidth,explicitHeight > measuredWidth,measuredHeight的优先级返回值。注意这个值已经包含旋转和缩放的值,且返回值永远为正数 |
preferredX,preferredY,layoutBoundsX,layoutBoundsY | 这四个属性,通常情况下就是xy的值。但是当组件含有旋转缩放时。他们为组件旋转缩放后在父级容器里实际显示的起点。 |
调试技巧 |
(1)自身是否被显式设置了尺寸?查看explicitWidth,explicitHeight。如果显式设置了,设置的对吗?不对找到问题。没有显式设置就继续。
(2)测量的尺寸对不对?查看measuredWidth,measuredHeight。不对,继续。对,跳到(5)
(3)查看top,left,right,bottom,horizontalCenter,verticalCenter,percentWidth,percentHeight这些布局属性对不对。注意:只有BasicLayout下这些属性才全部有效。
(4)布局类对吗?查看layout属性。以上都查过了,找不出问题,继续按(5)和(6)在显示列表向上或向下开始找。
(5)向上查看父级以及父级的父级容器的相关属性,是否正确。是否是父级容器强制设置了我们的尺寸。
(6)查看子项以及子项的子项的测量尺寸。找到第一个开始不对的节点
|
转载于:https://www.cnblogs.com/jason-beijing/p/7296611.html
EUI库 - 自动布局相关推荐
- EUI库 - EXML
EXML是可以运行时加载解析的 <e:Skin class="skins.ButtonSkin" states="up,down,disabled" ...
- egert eui库移动元素类
用到的是白鹭egert eui. 我这里假设的情况是,这个元素是外面还有一个容器包着的,它的parent的parent是宽高是舞台的宽高,如果你的不是,你可以根据实际情况自己改下,代码挺简单的.为了以 ...
- egret白鹭 基于eui组件的一些动画类 抽屉效果
用到了白鹭的eui库,以及缓动库. /** * 个人ui控件的控制动画实现 * 1.抽屉效果 抽屉般收回元素,前提是元素要靠边,就是要靠边 你想收回那边,就要靠近那边 * 收回左边 收回 ...
- 白鹭引擎拉伸高度_答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧...
原标题:答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧 1月31日-2月6日,开源中国社区邀请白鹭引擎首席架构师王泽以"微信小游戏开发技巧分享"为主题,为广大开发者带来 ...
- draw.io---一款免费、开源的流程图绘制工具
draw.io 是一款非常强大实用的免费.开源流程图绘制工具,功能众多,例如通过流程图来可视化您的工作流程.创建组织结构图来来显示人员结构.创建网络图来可视化网络等等,适用于商务.工程.电气.网络设计 ...
- Windows API参考大全
第一章 Win32 API概论 1.1为什么使用 Wu32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数.这些函数在程序员手中犹如" ...
- (42)C#里使用WeifenLuo.WinFormsUI.Docking库为界面自动布局
C#里使用WeifenLuo.WinFormsUI.Docking库为界面自动布局 在开发软件时,一个软件的界面布局,就像建筑高楼的蓝图,在早期就需要详细地规划和设计,避免后期的修改,因为后面修改,就 ...
- 第三方库Masonry自动布局AutoLayout使用
布局: 1. 放在哪 坐标 CGPoint(x, y) 2. 有多大 尺寸 CGSize(width, height) 布局方式: 1.绝对布局(FrameLayout)也称 坐标布局 ...
- Swift - 自动布局库SnapKit的使用详解2(约束的更新、移除、重做)
在之前的文章中我介绍了如何使用SnapKit的 snp_makeConstraints 方法进行各种约束的设置.但有时我们的页面并不是一直固定不变的,这就需要修改已经存在的约束.本文介绍如何更新.移除 ...
- iOS开发中用到的一些第三方库
下面是我在开发中用到的一些优秀的iOS第三方开源库: 1.AFNetworking(网络请求,类似的还有ASIHTTPRequest) https://github.com/AFNetworki ...
最新文章
- 使用GPG校验sign签名
- python练习程序(批量重命名)
- puppet系列之nginx+php日志切割与salt结合使用
- ubuntu 16.04 python3.4 升级为 python3.6
- windows app html5,使用 HTML5 來偵測位置 (HTML)
- ZYNQ PS端输出无效时钟供PL使用
- 为什么这个SQL Server DBA学习PowerShell--SMO任务及杂项
- Struts2学习笔记(十) OGNL
- idea 正则表达式替换
- H3C数通 H3CNE H3CSE 资料下载 肖哥视频下载
- Python身份证号码识别
- flowable设计器自定义自己的人员选择器
- 最新毕业设计参考文献大全
- 使用php的curl爬去青果教务系统 课表(转)
- centos7 搭建turn stun 服务器
- windows2003 升级sp1,sp2 产品密匙无效
- 用C++解决数学类问题的练习
- 时间序列分类算法之时间序列森林(TSF)
- [SPOJ P104]HIGH - Highways(Matrix-Tree定理)
- 2022第七届少儿模特明星盛典 小主持人江姿莹 T台风采展示
热门文章
- tar包安装vsftpd
- 谷歌浏览器元素定位神器 -- chropath插件
- 中国K12在线教育用户消费行为报告
- PLUS模型教程2:数据前期准备和土地利用数量预测
- php file_get_contents 失效,phpfile_get_contents返回空无效解决办法_PHP教程
- 第一集 斗罗世界 第二章
- unity初学人物走路卡住的问题
- 如何创建维恩图,用这个工具就可以了!
- [SSL_CHX][2021-08-19]前缀和
- java桌球小游戏使用图片_java桌球小游戏 小球任意角度碰撞