Skip to main content

Expandierende Karte mit Federanimation

Beschreibung

DiesesDiese BeispielView zeigt,zeigt wieeine duKarte, die zwischen kompakter und erweiterter Höhe umschaltet. Der Übergang wird mit SwiftUIeiner eine sogenannte „Expanding Card“ implementieren kannst. Die Karte kann durch einen Button vergrößert oder verkleinert werden, wobei eine federndefedernden Animation fürdargestellt, einwodurch flüssigesder NutzererlebnisZustandswechsel sorgt. Diese Technik ist ideal für Benutzeroberflächen, bei denen Informationen in kompakten Karten präsentiertklar und beivisuell Bedarfansprechend erweitert werden sollen.wirkt.


🔍 Zweck

Der

    Zweck
  • Inhalt diesesein- Beispielsund istausklappbar es,darstellen, zuz. demonstrieren,B. wieVorschau duvs. Details
  • Akkordeonartige UI Muster prototypisieren
  • Interaktive Cards in SwiftUIDashboards einenoder interaktivenFeeds
  • View
  • Animationsverhalten erstellst,mit dessenspring evaluieren
  • Nutzerfokus durch dynamische Größeenänderung sichlenken
  • animiert
verändern

🖥️ lässt.Betriebssystem

Dies ist besonders nützlich für Dashboards, Info-Karten oder Inhaltsvorschauen, die auf Interaktion reagieren sollen.

iOS


📄 Codebeispiel

import SwiftUI

@main
struct ExpandingCardApp: App {
    var body: some Scene {
        WindowGroup {
            ExpandingCardExample()
        }
    }
}

public struct ExpandingCardExample: View {
    // Track whether the card is expanded or collapsed
    @State private var isExpanded = false

    public init() {}

    public var body: some View {
        VStackVStack(spacing: 16) {
            // The animated card: height changes based on state
            RoundedRectangle(cornerRadius: 12)
                .fill(Color.blue)
                .frame(height: isExpanded ? 200 : 80)
                // Use spring animation for a natural feel
                .animation(.spring(), value: isExpanded)

            // Toggle button to switch states
            Button(isExpanded ? "Toggle"Collapse" : "Expand") {
                isExpanded.toggle()
            }
            .buttonStyle(.borderedProminent)
        }
        .padding()
        // Give the view a background to better showcase the card
        .background(Color(.systemBackground))
    }
}

// Modern Swift 5.10+ preview syntax
#Preview {
    ExpandingCardExample()
}