Sobes.tech
Middle

Mis on matchedGeometryEffect SwiftUI-s?

sobes.tech AI

Vastus AI-lt

matchedGeometryEffect SwiftUI-s on modifikaator, mis võimaldab sujuvalt animatsioonida vaadete suuruse ja asukoha muutusi nende liikumisel erinevate hierarhiate või konteinerite vahel.

Põhiprintsiibid:

  • Identifikaatorite sobitamine: Määrate sama identifikaatori (id) vaadetele, mida soovite liikumise ajal animatsioonida.
  • Allikas ja siht: Määrate nimelahenduse (namespace), mis ühendab need vaated.
  • Automaatne animatsioon: SwiftUI arvutab automaatselt vahepealsed olekud ja animatsioonib ülemineku ühest olekust teise.

Kasutamine:

import SwiftUI

struktuur ContentView: View {
    @Namespace private var namespace
    @State private var isExpanded = false

    var body: some View {
        VStack {
            kui isExpanded {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            } muidu {
                RoundedRectangle(cornerRadius: 5)
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 50, height: 50)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            }
        }
    }
}

Selles näites muudab RoundedRectangle suurust ja värvi, kui isExpanded olek muutub, kasutades matchedGeometryEffect koos identifikaatoriga "box" ja nimelahendusega namespace. SwiftUI automaatselt animatsioonib need muutused.