Widget对齐没有事件通知,生命周期onLoad、Start阶段获取的都是对齐前的值,无法理解这种设计

引擎版本3.7.4
真的想吐槽这个Widget很久很久了,想要获取widget对齐后的节点位置,要么手动updateAlignment,要么只能延迟一帧处理,不觉得别扭吗?

很正常吧,如果你一个时间段要调整多个对齐参数,调整完了之后一起算更节省性能

一起处理没问题,问题在于什么时候对齐完用户是不知道的,Widget也没有事件通知

表现层自动计算更新的逻辑一般都会延时更新,这是常见逻辑
这种设计是因为表现层一般被认为是逻辑链的最后一个节点。一般不会去获取最终表现的尺寸坐标等来用。

默认下一帧,其他地方的设计也是这样的

表现层最后处理是常见逻辑这没错,但widget并没有完美到可以处理到最终的表现上,widget很多情况下都是被依赖的,由widget决定正确的初始位置后续进行动画表现。关于tween和widget的冲突论坛也是很多人提过的。
当然widget是用管理器统一对齐的,延后处理也没问题。问题的关键还是widget对齐完没有提供回调接口,要么手动调用updateAlignment,要么延后一帧处理,但延后一帧会有UI闪跳的问题。我试过手动调用updateAlignment,也会出现并没有马上对齐的bug,不过这个问题我还没有研究。
目前看widget对齐模式只有设置为ONCE才是好用的,但这也并不现实,因为要进行多分辨率适配的调试,基本都是用的ON_WINDOW_RESEIZE,官方默认也是这个模式。
同一帧widget对齐后进行UI动画表现(不同帧会有闪跳问题)这应该是个常见需求