From 31a262fd088d075eeadd569562b9b0c0e405a2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=89=E7=A7=8B?= <497055328@qq.com> Date: Tue, 23 Jun 2026 14:27:20 +0800 Subject: [PATCH] Simplify global loading overlay to animation-only display. Remove visible message text from the loading UI while keeping the message field for internal state and future use. Co-authored-by: Cursor --- suixinkan/Core/Core.md | 2 ++ suixinkan/Core/Design/GlobalLoadingCenter.swift | 15 +++------------ 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/suixinkan/Core/Core.md b/suixinkan/Core/Core.md index d8a6182..c22e1ac 100644 --- a/suixinkan/Core/Core.md +++ b/suixinkan/Core/Core.md @@ -71,6 +71,8 @@ Core 模块提供跨业务复用的基础能力,包括网络请求、缓存存 Loading 的可观察状态只在 `GlobalLoadingOverlayHost` 内部订阅,并由 `RootView` 挂载到应用根部。这样切换 Loading 显隐时,只会刷新根部 Overlay,不会让当前页面、Tab 根视图或业务子视图形成观察依赖。 +当前全局 Loading UI 不展示文案;`message` 字段保留为内部展示状态,便于后续需要时恢复文案展示。 + 全局 Loading 只用于阻塞型等待,例如冷启动恢复、登录、首屏加载、提交表单和核销。列表加载更多、上传进度、按钮内局部反馈继续保留在页面局部状态中。 ## Upload diff --git a/suixinkan/Core/Design/GlobalLoadingCenter.swift b/suixinkan/Core/Design/GlobalLoadingCenter.swift index bafe627..06eda1d 100644 --- a/suixinkan/Core/Design/GlobalLoadingCenter.swift +++ b/suixinkan/Core/Design/GlobalLoadingCenter.swift @@ -146,25 +146,16 @@ private struct GlobalLoadingOverlayHost: View { VStack(spacing: 14) { loadingAnimation - - if !state.message.isEmpty { - Text(state.message) - .font(.system(size: 15, weight: .medium)) - .foregroundStyle(Color(hex: 0x333333)) - .multilineTextAlignment(.center) - .lineLimit(2) - .padding(.horizontal, 8) - } } - .padding(.horizontal, 28) - .padding(.vertical, 24) + .padding(.horizontal, 10) + .padding(.vertical, 10) .background(.white, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) .shadow(color: Color.black.opacity(0.12), radius: 24, x: 0, y: 10) } .transition(.opacity) .zIndex(10_000) .accessibilityElement(children: .combine) - .accessibilityLabel(state.message.isEmpty ? "加载中" : state.message) + .accessibilityLabel("加载中") } } .animation(.easeInOut(duration: 0.2), value: state.isVisible)