From a2bd22c4e14fd3b73fb42fe1dd1f5f804d590610 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 1 Apr 2026 18:39:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPSD=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=94=BB=E5=B8=83=E8=87=AA=E5=8A=A8=E9=80=82=E9=85=8D=E6=97=B6?= =?UTF-8?q?=E6=9C=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加延迟执行确保DOM已渲染 - 添加尺寸有效性检查 Co-Authored-By: Claude Opus 4.6 --- .../agents/AgentPsdTemplateEditorDialog.tsx | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/components/agents/AgentPsdTemplateEditorDialog.tsx b/components/agents/AgentPsdTemplateEditorDialog.tsx index 9b66d50d9..c658240a6 100644 --- a/components/agents/AgentPsdTemplateEditorDialog.tsx +++ b/components/agents/AgentPsdTemplateEditorDialog.tsx @@ -472,18 +472,23 @@ export function AgentPsdTemplateEditorDialog({ setTextAssignments(initialState.textAssignments); setSelectedLayerId(getPreferredSelectedLayerId(selectedTemplate)); - // 自动适配缩放比例 - if (selectedTemplate && previewViewportRef.current) { - const viewport = previewViewportRef.current; - const padding = 32; // 预留边距 - const availableWidth = viewport.clientWidth - padding; - const availableHeight = viewport.clientHeight - padding; + // 自动适配缩放比例(延迟执行确保 DOM 已渲染) + if (selectedTemplate) { + setTimeout(() => { + if (previewViewportRef.current) { + const viewport = previewViewportRef.current; + const padding = 32; + const availableWidth = viewport.clientWidth - padding; + const availableHeight = viewport.clientHeight - padding; - const scaleX = availableWidth / selectedTemplate.width; - const scaleY = availableHeight / selectedTemplate.height; - const fitScale = Math.min(scaleX, scaleY, 1); // 不超过1倍 - - setStageScale(fitScale); + if (availableWidth > 0 && availableHeight > 0) { + const scaleX = availableWidth / selectedTemplate.width; + const scaleY = availableHeight / selectedTemplate.height; + const fitScale = Math.min(scaleX, scaleY, 1); + setStageScale(fitScale); + } + } + }, 100); } }, [open, selectedTemplate, sourceImageUrl]);