Přeskočit na hlavní obsah

Indikátor načítání

SecureLoadingView.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.

Tip

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)
ParametrTypPopis
textString?Volitelný text pod spinnerem. nil skryje popisek.
styleLoadingStyleStylová 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…"
)
}
}
ParametrTypPopis
isVisibleBoolZobrazí/skryje overlay.
textString?Volitelný text.
styleLoadingStyleStylová 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)
}
}
ParametrTypPopis
sessionComgateSecureSessionSession, jejíž isProcessingPayment overlay sleduje.
textString?Volitelný text. Pokud nil, použije se session.translation.loadingProcessingText ze session.
styleLoadingStyleStylová struktura. Výchozí: .overlay.
isLoadingEnabledBoolPokud 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.

Informace

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

VlastnostTypVýchozíPopis
spinnerColorColor#4287F5Barva otáčejícího se oblouku.
trackColorColor#E0E0E0Barva statické dráhy spinneru.
strokeWidthCGFloat4Tloušťka oblouku i dráhy v bodech.
spinnerSizeCGFloat48Průměr spinneru v bodech.
textColorColor#666666Barva textu popisku.
textSizeCGFloat14Velikost textu popisku v bodech.
textGapCGFloat8Mezera mezi spinnerem a popiskem v bodech.
textFontNameString?nilNázev vlastního fontu.
backgroundColorColor.whiteBarva pozadí karty (overlay panelu).
cornerRadiusCGFloat12Zaoblení rohů karty v bodech.
paddingHorizontalCGFloat16Horizontální vnitřní odsazení karty.
paddingVerticalCGFloat20Vertikální vnitřní odsazení karty.
dimAmountCGFloat0.0Průhlednost ztmaveného pozadí (0–1).

Presety

PresetPopis
LoadingStyle.indicatorPro inline použití (SecureLoadingView). Výchozí.
LoadingStyle.overlayPro 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…"
)