Sobes.tech
Middle

Kas ir matchedGeometryEffect SwiftUI?

sobes.tech AI

Atbilde no AI

matchedGeometryEffect SwiftUI — tas modifikators, kas ļauj gludi animēt izmaiņas izmērā un pozīcijā, pārvietojoties starp dažādām hierarhijām vai konteineriem.

Galvenie principi:

  • Identifikatoru saskaņošana: Norādiet vienu un to pašu identifikatoru (id) vaizdiem, kurus vēlaties animēt pārejot.
  • Avots un mērķis: Norādiet nosaukumu telpu (namespace), kas apvieno šos vaizdus.
  • Automātiska animācija: SwiftUI automātiski aprēķina starpposma stāvokļus un animē pāreju no viena stāvokļa uz otru.

Lietošana:

import SwiftUI

struktūra ContentView: View {
    @Namespace private var namespace
    @State private var isExpanded = false

    var body: some View {
        VStack {
            ja ir izplests {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        arAnimāciju {
                            isExpanded.toggle()
                        }
                    }
            } citādi {
                RoundedRectangle(cornerRadius: 5)
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 50, height: 50)
                    .onTapGesture {
                        arAnimāciju {
                            isExpanded.toggle()
                        }
                    }
            }
        }
    }
}

Šajā piemērā RoundedRectangle maina izmēru un krāsu, pārslēdzoties starp stāvokļiem isExpanded, izmantojot matchedGeometryEffect ar identifikatoru "box" un nosaukumu telpu namespace. SwiftUI automātiski animē šīs izmaiņas.