Contents

william-weng/wwhudui

English | 繁體中文

✨ [功能特色](https://peterpanswift.github.io/iphone-bezels/)

  • @Observable@MainActor 管理 HUD 狀態,適合直接驅動 SwiftUI 畫面更新。
  • 使用 withAnimation.transition(.opacity) 實作淡入淡出效果,避免 HUD 突然出現或瞬間消失。
  • 支援最短顯示時間 minimumVisibleDuration,避免 loading 太快時畫面只閃一下。
  • 透過 Task 管理延遲隱藏流程,連續呼叫 display() / dismiss() 時可先取消上一個隱藏任務,避免狀態互相干擾。
  • ViewModifier 封裝,可用 .loadingOverlay(hud:) 很自然地套用到任意 SwiftUI View 上。

📦 安裝方式

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/William-Weng/WWHUDUI.git", .upToNextMajor(from: "1.1.1"))
]

🧩 可用API

| 方法 | 說明 | |---|---| | display(_:duration:) | 顯示 HUD,並以指定動畫時間淡入。 | | dismiss(minimumVisibleDuration:duration:) | 關閉 HUD,並保證至少顯示指定秒數後才淡出。 |

🧩 可用 Modifier

| 方法 | 說明 | |---|---| | loadingOverlay(:background:) | 在畫面上顯示 loading overlay。 | | toastOverlay(:background:) | 在畫面下方顯示 toast overlay。 |

🚀 範例畫面結構

struct ContentView: View {

    @State private var hud = WWHUDUI()

    var body: some View {
    
        VStack(spacing: 20) {
            Button("開始載入") {
                hud.display("資料載入中...")

                Task {
                    try? await Task.sleep(for: .seconds(1.2))
                    hud.dismiss(minimumVisibleDuration: 0.3)
                }
            }
        }
        .loadingOverlay(hud)
    }
}

Package Metadata

Repository: william-weng/wwhudui

Default branch: main

README: README.md