diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index 56b2457..d4946ac 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -1599,27 +1599,8 @@ export class Draw { (i !== 0 && element.value === ZERO) // 是否宽度不足导致换行 const isWidthNotEnough = curRowWidth > availableWidth + // 新行数据处理 if (isForceBreak || isWidthNotEnough) { - // 换行原因:宽度不足 - curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak - // 两端对齐、分散对齐 - if ( - preElement?.rowFlex === RowFlex.JUSTIFY || - (preElement?.rowFlex === RowFlex.ALIGNMENT && isWidthNotEnough) - ) { - // 忽略换行符及尾部元素间隔设置 - const rowElementList = - curRow.elementList[0]?.value === ZERO - ? curRow.elementList.slice(1) - : curRow.elementList - const gap = - (availableWidth - curRow.width) / (rowElementList.length - 1) - for (let e = 0; e < rowElementList.length - 1; e++) { - const el = rowElementList[e] - el.metrics.width += gap - } - curRow.width = availableWidth - } const row: IRow = { width: metrics.width, height, @@ -1670,6 +1651,29 @@ export class Draw { } curRow.elementList.push(rowElement) } + // 行结束时逻辑 + if (isForceBreak || isWidthNotEnough || i === elementList.length - 1) { + // 换行原因:宽度不足 + curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak + // 两端对齐、分散对齐 + if ( + preElement?.rowFlex === RowFlex.JUSTIFY || + (preElement?.rowFlex === RowFlex.ALIGNMENT && isWidthNotEnough) + ) { + // 忽略换行符及尾部元素间隔设置 + const rowElementList = + curRow.elementList[0]?.value === ZERO + ? curRow.elementList.slice(1) + : curRow.elementList + const gap = + (availableWidth - curRow.width) / (rowElementList.length - 1) + for (let e = 0; e < rowElementList.length - 1; e++) { + const el = rowElementList[e] + el.metrics.width += gap + } + curRow.width = availableWidth + } + } } return rowList }