添加按比例缩放的表格计算逻辑,使用小于等于1的单元格尺寸来获取相对容器的尺寸

This commit is contained in:
2026-08-03 17:34:44 +08:00
parent f7931d41f1
commit 29c7c4e81e
10 changed files with 126 additions and 54 deletions
@@ -339,7 +339,7 @@ namespace XericUI.XTable.Rendering.Component
=> TableData.IsMergeSource(row, col, out rowSpan, out colSpan);
/// <summary>
/// 在末尾追加一行,默认行高来自 Config。
/// 在末尾追加一行,默认行高来自 Config。尺寸在 (0, 1] 时按 viewport、父级或自身高度比例解析,> 1 时为像素。
/// 行为:普通调用立即扩展行数组;CheckUpdate 内记录追加,结束时只重建一次。
/// 建议:循环追加或随后填充新行时使用 CheckUpdate。
/// </summary>
@@ -367,7 +367,7 @@ namespace XericUI.XTable.Rendering.Component
}
/// <summary>
/// 在末尾追加一列,默认列宽来自 Config。
/// 在末尾追加一列,默认列宽来自 Config。尺寸在 (0, 1] 时按 viewport、父级或自身宽度比例解析,> 1 时为像素。
/// 行为:普通调用立即扩展列数组;CheckUpdate 内记录追加,结束时只重建一次。
/// 建议:循环追加或随后填充新列时使用 CheckUpdate。
/// </summary>
@@ -395,7 +395,7 @@ namespace XericUI.XTable.Rendering.Component
}
/// <summary>
/// 设置指定行的高度。
/// 设置指定行的高度。尺寸在 (0, 1] 时按 viewport、父级或自身高度比例解析,> 1 时为像素。
/// 行为:普通调用立即更新布局;CheckUpdate 内延后,最终按命令顺序应用。
/// 建议:批量调整行高时使用 CheckUpdate。
/// </summary>
@@ -420,7 +420,7 @@ namespace XericUI.XTable.Rendering.Component
}
/// <summary>
/// 设置指定列的宽度。
/// 设置指定列的宽度。尺寸在 (0, 1] 时按 viewport、父级或自身宽度比例解析,> 1 时为像素。
/// 行为:普通调用立即更新布局;CheckUpdate 内延后,最终按命令顺序应用。
/// 建议:批量调整列宽时使用 CheckUpdate。
/// </summary>
@@ -672,6 +672,7 @@ namespace XericUI.XTable.Rendering.Component
m_Assembler = new CellAssembler(ContentTransform, m_DefaultStyleNamespace);
m_PrefabPool = new PrefabPrototypePool(ContentTransform);
m_ActivePrefabMap = new Dictionary<(int, int), GameObject>();
UpdateResolvedCellSizes();
RecalculateTotalSize();
CreateDefaultSampleData();
CreateBackground();
@@ -732,6 +733,7 @@ namespace XericUI.XTable.Rendering.Component
m_Assembler = new CellAssembler(ContentTransform, m_DefaultStyleNamespace);
m_PrefabPool = new PrefabPrototypePool(ContentTransform);
m_ActivePrefabMap = new Dictionary<(int, int), GameObject>();
UpdateResolvedCellSizes();
RecalculateTotalSize();
// 恢复文本数据到新 TableData
@@ -820,6 +822,7 @@ namespace XericUI.XTable.Rendering.Component
m_PrefabPool = new PrefabPrototypePool(ContentTransform);
m_ActivePrefabMap = new Dictionary<(int, int), GameObject>();
MarkDirty(TableDirtyType.All);
UpdateResolvedCellSizes();
RecalculateTotalSize();
CreateBackground();
CreateViewportRenderer();
@@ -881,6 +884,7 @@ namespace XericUI.XTable.Rendering.Component
// 写回单元格文本与合并信息
data.PopulateToTable(this);
UpdateResolvedCellSizes();
RecalculateTotalSize();
RequestRefresh(TableDirtyType.DataChanged | TableDirtyType.LayoutChanged, true);
SetChildrenVisible(m_ChildrenVisible);