Přeskočit na hlavní obsah

Stylizace komponent

Komponenty knihovny lze stylovat prostřednictvím stylových struktur (FieldStyle, PayButtonStyle, PaymentStatusStyle, LoadingStyle, ApplePayButtonStyle). Každá komponenta přijímá svoji stylovou strukturu jako parametr style: v inicializátoru.

Secure Fields (vstupní pole)

Stylování Secure Fields probíhá strukturou FieldStyle. Stejná struktura platí pro SecurePanField, SecureExpiryField, SecureCvvFieldSecureFullNameField.

Vlastnosti FieldStyle

VlastnostTypVýchozíPopis
borderColorColor#E5E5E5Barva ohraničení v normálním stavu.
focusedBorderColorColor#E5E5E5Barva ohraničení při zaměření (focus).
errorBorderColorColor#B00020Barva ohraničení v chybovém stavu.
textColorColor#111111Barva textu.
hintColorColor#BDBDBDBarva placeholder textu.
backgroundColorColor.whiteBarva pozadí pole.
cornerRadiusCGFloat12Zaoblení rohů v bodech.
verticalPaddingCGFloat14Vertikální vnitřní odsazení.
horizontalPaddingCGFloat14Horizontální vnitřní odsazení.
fontFont.system(size: 17, weight: .regular)Písmo textu.

K dispozici je preset FieldStyle.default se všemi výchozími hodnotami.

Příklad

let style = FieldStyle(
borderColor: Color(red: 0.90, green: 0.90, blue: 0.94),
focusedBorderColor: Color(red: 0.10, green: 0.47, blue: 0.91),
errorBorderColor: Color(red: 0.78, green: 0.16, blue: 0.16),
textColor: .black,
hintColor: .gray,
backgroundColor: Color(red: 0.98, green: 0.98, blue: 0.98),
cornerRadius: 14,
verticalPadding: 14,
horizontalPadding: 16,
font: .system(size: 17, weight: .medium)
)

VStack(spacing: 12) {
SecurePanField(state: panState, style: style)
SecureExpiryField(state: expiryState, style: style)
SecureCvvField(state: cvvState, style: style)
SecureFullNameField(state: nameState, style: style)
}

Stylování více polí najednou

Vytvořte si jednu sdílenou instanci FieldStyle a předejte ji všem polím:

private let sharedFieldStyle = FieldStyle(
cornerRadius: 14,
verticalPadding: 14,
horizontalPadding: 16,
font: .system(size: 17, weight: .medium)
)

SecurePanField(state: panState, style: sharedFieldStyle)
SecureExpiryField(state: expiryState, style: sharedFieldStyle)
SecureCvvField(state: cvvState, style: sharedFieldStyle)
Informace

Stavy ohraničení (borderColor, focusedBorderColor, errorBorderColor) přepínají automaticky podle stavu pole. Priorita: chyba > focus > normální.

SecurePayButton (platební tlačítko)

Stylování SecurePayButton probíhá strukturou PayButtonStyle.

Vlastnosti PayButtonStyle

VlastnostTypVýchozíPopis
backgroundColorColorzelená (#4CAF50)Barva pozadí v aktivním stavu.
disabledBackgroundColorColorsvětle šedá (#F5F5F5)Barva pozadí v deaktivovaném stavu.
textColorColor.whiteBarva textu v aktivním stavu.
disabledTextColorColor#BDBDBDBarva textu v deaktivovaném stavu.
cornerRadiusCGFloat12Zaoblení rohů v bodech.
fontFont.system(size: 16, weight: .bold)Písmo textu.
textFontNameString?nilNázev vlastního fontu. Pokud je vyplněn, přepisuje font.
disableShimmerBoolfalseVypne shimmer animaci během zpracování.
shimmerBaseColorColorColor.gray.opacity(0.25)Základní barva shimmer pruhu.
shimmerHighlightColorColorColor.white.opacity(0.55)Highlight barva shimmer pruhu.
processingTextString?nilVlastní text během zpracování. Pokud nil, použije se Translation.payButtonProcessingText.
buttonTextString?nilVlastní text tlačítka. Pokud nil, použije se Translation.payButtonText.
borderColorColor.clearBarva ohraničení.
borderWidthCGFloat0Šířka ohraničení v bodech.
paddingHorizontalCGFloat16Horizontální vnitřní odsazení.
paddingVerticalCGFloat12Vertikální vnitřní odsazení.

K dispozici je preset PayButtonStyle.default se všemi výchozími hodnotami.

Příklad

SecurePayButton(
session: session,
collector: collector,
paymentParams: { /* ... */ },
onResult: { _ in },
style: PayButtonStyle(
backgroundColor: Color(red: 0.12, green: 0.53, blue: 0.90),
textColor: .white,
cornerRadius: 14,
font: .system(size: 16, weight: .semibold),
disableShimmer: false,
processingText: "Zpracovávám…",
borderColor: Color(red: 0.08, green: 0.40, blue: 0.78),
borderWidth: 1,
buttonText: "Zaplatit"
)
)

Automatický deaktivovaný stav

SecurePayButton se automaticky deaktivuje, když:

  • session není inicializovaná (session.state != .ready),
  • karetní data nejsou validní (collector.isValid == false),
  • právě probíhá zpracování platby.

V deaktivovaném stavu se použije disabledBackgroundColordisabledTextColor.

Animace během zpracování platby

Po stisku tlačítka se nad jeho obsahem zobrazí shimmer animace — poloprůhledný třpytivý pruh, který přejíždí zleva doprava. Animaci lze vypnout:

let style = PayButtonStyle(disableShimmer: true)

SecurePaymentStatusView (stavový banner)

Stylování SecurePaymentStatusView probíhá strukturou PaymentStatusStyle.

Vlastnosti PaymentStatusStyle

VlastnostTypVýchozíPopis
textColorColor?automatická dle stavuBarva textu. Pokud nil, použije se výchozí pro daný stav (zelená/oranžová/červená).
backgroundColorColor?automatická dle stavuBarva pozadí. Pokud nil, použije se výchozí pro daný stav.
borderColorColor?automatická dle stavuBarva ohraničení. Pokud nil, použije se výchozí pro daný stav.
borderWidthCGFloat1Šířka ohraničení.
cornerRadiusCGFloat8Zaoblení rohů.
paddingHorizontalCGFloat16Horizontální vnitřní odsazení.
paddingVerticalCGFloat10Vertikální vnitřní odsazení.
textFontNameString?nilNázev vlastního fontu.
textSizeCGFloat14Velikost textu v bodech.

K dispozici je preset PaymentStatusStyle.default.

Příklad

@StateObject private var statusState = PaymentStatusState()

var body: some View {
VStack {
SecurePaymentStatusView(
state: statusState,
style: PaymentStatusStyle(
cornerRadius: 12,
paddingHorizontal: 20,
paddingVertical: 14,
textSize: 15
)
)
}
}
Tip

Komponenta je ve výchozím stavu skrytá (PaymentStatusState.visible == false). Zobrazí se po zavolání statusState.show(result: paymentResult). Skryje se po zavolání statusState.hide() nebo statusState.clear(). Více informací o zobrazování stavů naleznete v sekci Výsledky platby.

ApplePayButtonStyle

Stylování SecureApplePayButton je popsáno v sekci Apple Pay — Nastavení vzhledu tlačítka.

LoadingStyle

Stylování indikátoru načítání (SecureLoadingView.secureLoadingOverlay) je popsáno v sekci Indikátor načítání — LoadingStyle.