Layout组件手动updateLayout(true) 不会触发 SIZE_CHANGED 事件

解决办法,自己做一个updateLayout工具方法

static updateLayout(nd: Node): void {
    let widget: Widget = nd.getComponent(Widget);
    if (widget) {
        widget.updateAlignment();
    }

    for (let cnd: Node of nd.children) {
        if (cnd.children.length > 0) {
            UIHelper.updateLayout(cnd);
        } else {
            let widget: Widget = cnd.getComponent(Widget);
            if (widget) {
                widget.updateAlignment();
            }
            let layout: Layout = cnd.getComponent(Layout);
            if (layout) {
                layout.updateLayout(true);
            }
            cnd.emit(Node.EventType.SIZE_CHANGED);
        }
    }

    let layout: Layout = nd.getComponent(Layout);
    if (layout) {
        layout.updateLayout(true);
    }
    nd.emit(Node.EventType.SIZE_CHANGED);
}
  • Creator 版本:

  • 目标平台:

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率: