Indikátor načítání
SecureLoadingView a .secureLoadingOverlay jsou volitelné komponenty knihovny zobrazující animovaný indikátor načítání během zpracování platby. Po navázání na ComgateSecureSession se overlay zobrazuje a skrývá automaticky v závislosti na stavu platby.
Komponenta je volitelná — platba proběhne korektně i bez ní. Slouží výhradně k vizuální zpětné vazbě pro uživatele.
Struktura
Knihovna nabízí dvě varianty indikátoru načítání:
SecureLoadingView— inline view, který lze přímo umístit do hierarchie SwiftUI (např. uprostřed obrazovky)..secureLoadingOverlay(...)— view modifier, který zobrazí indikátor jako plovoucí panel nad celou obrazovkou se ztmaveným pozadím.
Indikátor se skládá ze dvou vizuálních prvků:
- Animovaný spinner — kruhový spinner s plynule otáčejícím se obloukem nad statickou dráhou
- Textový popisek — volitelný text zobrazený pod spinnerem; výchozí text se automaticky odvozuje z jazyka session
SecureLoadingView
Inline indikátor pro vlastní umístění:
import SwiftUI
import ComgateSDK
VStack {
Spacer()
SecureLoadingView(text: "Zpracovávám platbu…")
Spacer()
}
Inicializátor
public init(text: String? = nil, style: LoadingStyle = .indicator)
| Parametr | Typ | Popis |
|---|---|---|
text | String? | Volitelný text pod spinnerem. nil skryje popisek. |
style | LoadingStyle | Stylová struktura. Výchozí: .indicator. |
SecureLoadingOverlay (modifier)
SecureLoadingOverlay je view modifier, který se aplikuje na nadřazený view a zobrazí přes něj plovoucí indikátor. Knihovna poskytuje dvě varianty:
Manuální ovládání
struct ContentView: View {
@State private var isLoading = false
var body: some View {
ZStack { /* ... */ }
.secureLoadingOverlay(
isVisible: isLoading,
text: "Zpracovávám platbu…"
)
}
}
| Parametr | Typ | Popis |
|---|---|---|
isVisible | Bool | Zobrazí/skryje overlay. |
text | String? | Volitelný text. |
style | LoadingStyle | Stylová struktura. Výchozí: .overlay. |
Automatická vazba na session
Doporučená varianta — overlay se zobrazuje a skrývá automaticky podle session.isProcessingPayment:
struct ContentView: View {
@ObservedObject var session: ComgateSecureSession
var body: some View {
ZStack { /* ... */ }
.secureLoadingOverlay(session: session)
}
}
| Parametr | Typ | Popis |
|---|---|---|
session | ComgateSecureSession | Session, jejíž isProcessingPayment overlay sleduje. |
text | String? | Volitelný text. Pokud nil, použije se session.translation.loadingProcessingText ze session. |
style | LoadingStyle | Stylová struktura. Výchozí: .overlay. |
isLoadingEnabled | Bool | Pokud false, overlay se nezobrazí ani při zpracování. Výchozí: true. |
Při použití auto-bound varianty se overlay zobrazí, jakmile zahájí zpracování platby (session.processPayment(...) nebo session.processApplePayPayment(...)), a skryje se po obdržení terminálního výsledku.
Pokud chcete automatické chování dočasně zakázat, předejte isLoadingEnabled: false. Manuální zobrazení přes secureLoadingOverlay(isVisible:) zůstává nezávislé.
LoadingStyle
Stylování probíhá strukturou LoadingStyle.
Vlastnosti
| Vlastnost | Typ | Výchozí | Popis |
|---|---|---|---|
spinnerColor | Color | #4287F5 | Barva otáčejícího se oblouku. |
trackColor | Color | #E0E0E0 | Barva statické dráhy spinneru. |
strokeWidth | CGFloat | 4 | Tloušťka oblouku i dráhy v bodech. |
spinnerSize | CGFloat | 48 | Průměr spinneru v bodech. |
textColor | Color | #666666 | Barva textu popisku. |
textSize | CGFloat | 14 | Velikost textu popisku v bodech. |
textGap | CGFloat | 8 | Mezera mezi spinnerem a popiskem v bodech. |
textFontName | String? | nil | Název vlastního fontu. |
backgroundColor | Color | .white | Barva pozadí karty (overlay panelu). |
cornerRadius | CGFloat | 12 | Zaoblení rohů karty v bodech. |
paddingHorizontal | CGFloat | 16 | Horizontální vnitřní odsazení karty. |
paddingVertical | CGFloat | 20 | Vertikální vnitřní odsazení karty. |
dimAmount | CGFloat | 0.0 | Průhlednost ztmaveného pozadí (0–1). |
Presety
| Preset | Popis |
|---|---|
LoadingStyle.indicator | Pro inline použití (SecureLoadingView). Výchozí. |
LoadingStyle.overlay | Pro overlay variantu. Větší padding, zaoblení rohů 16. |
Příklad
let style = LoadingStyle(
spinnerColor: Color(red: 0.10, green: 0.47, blue: 0.91),
trackColor: Color(red: 0.85, green: 0.92, blue: 1.00),
strokeWidth: 4,
spinnerSize: 52,
backgroundColor: .white,
cornerRadius: 16,
paddingHorizontal: 28,
paddingVertical: 28,
dimAmount: 0.5
)
ContentView()
.secureLoadingOverlay(session: session, style: style)
Překlad textového popisku
Výchozí text pod spinnerem v auto-bound variantě je automaticky odvozený z jazyka zvolené platební session přes Translation.loadingProcessingText. Pro vlastní text předejte parametr text:
ContentView()
.secureLoadingOverlay(
session: session,
text: "Zpracováváme vaši platbu, prosím počkejte…"
)