Sobes.tech
Middle+

Kas ir matchedGeometryEffect un kā tas tiek izmantots SwiftUI?

sobes.tech AI

Atbilde no AI

matchedGeometryEffect SwiftUI tiek izmantots, lai izveidotu gludu pāreju starp diviem attēliem, kas pārstāv to pašu vizuālo elementu dažādos izkārtojumos. Tas sasaista viena stāvokļa attēla ģeometriju ar cita stāvokļa attēla ģeometriju, ļaujot SwiftUI automātiski animēt izmaiņas.

Tiek izmantots, piemērojot .matchedGeometryEffect modifikatoru abiem attēliem, kas jāsaista. Modifikators pieņem trīs parametrus:

  1. id: Unikāls identifikators saistītajiem attēliem.
  2. in: Vārdu telpa (Namespace), kurā reģistrēts identifikators. Parasti tas tiek izveidots ar @Namespace.
  3. properties: Ģeometriskās īpašības, kuras jāanimē (piemēram, .position, .size, .frame).

Piemēra lietošana:

struct ContentView: View {
    @Namespace private var animation
    @State private var isExpanded = false

    var body: some View {
        VStack {
            if isExpanded {
                Rectangle()
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "myShape", in: animation)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            } else {
                Rectangle()
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "myShape", in: animation)
                    .frame(width: 50, height: 50)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            }
        }
    }
}

Šajā piemērā .matchedGeometryEffect sasaista divus Rectangle ar vienu un to pašu id ("myShape") un vienādu vārdu telpu (animation). Kad isExpanded mainās, SwiftUI automātiski animē pāreju starp abiem stāvokļiem, radot gludu izmēra un pozīcijas maiņas efektu.