Sobes.tech
Middle+

matchedGeometryEffect nədir və SwiftUI-də necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

SwiftUI-də matchedGeometryEffect, eyni vizual elementi fərqli düzənlərdə təmsil edən iki görünüm arasında hamar keçid animasiyası yaratmaq üçün istifadə olunur. Bu, bir vəziyyətdə görünümün geometrisini digər vəziyyətdəki görünümün geometrisi ilə bağlayır və SwiftUI-nin dəyişiklikləri avtomatik olaraq animasiya etməsinə imkan verir.

İstifadəsi, .matchedGeometryEffect modifikatorunun hər iki görünümə tətbiq olunması ilə həyata keçirilir. Bu modifikator üç parametr qəbul edir:

  1. id: Görünümləri bağlamaq üçün unikal identifikator.
  2. in: İdentifikatorun qeydiyyata alındığı ad sahəsi (Namespace). Adətən, @Namespace ilə yaradılır.
  3. properties: Animasiya ediləcək geometrik xüsusiyyətlər (məsələn, .position, .size, .frame).

İstifadə nümunəsi:

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()
                        }
                    }
            }
        }
    }
}

Bu nümunədə, .matchedGeometryEffect iki Rectangle-i eyni id ("myShape") və eyni ad sahəsində (animation) bağlayır. isExpanded dəyişdikdə, SwiftUI bu iki vəziyyət arasında keçidi animasiya edir və düzbucaqlının ölçüsünü və mövqeyini hamar dəyişikliklə göstərir.