matchedGeometryEffect nima va u SwiftUI da qanday ishlatiladi?
sobes.tech AI
AIdan javob
SwiftUI'da matchedGeometryEffect, ayni vizual elementi farklı düzenlerde temsil eden iki görünüm arasında düzgün bir geçiş animasyonu oluşturmak için kullanılır. Bu, bir durumdaki görünümün geometrisini başka bir durumdaki görünümün geometrisiyle bağlar ve SwiftUI'nin değişiklikleri otomatik olarak animasyonla göstermesini sağlar.
Kullanımı, .matchedGeometryEffect modifikatörünün her iki görünüme de uygulanmasıyla gerçekleşir. Bu modifikatör üç parametre alır:
id: Görünümleri bağlamak için benzersiz kimlik.in: Kimliğin kaydedildiği isim alanı (Namespace). Genellikle@Namespaceile oluşturulur.properties: Animasyon yapılacak geometrik özellikler (örneğin,.position,.size,.frame).
Kullanım örneği:
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 örnekte, .matchedGeometryEffect aynı id'ye ("myShape") ve aynı isim alanına (animation) sahip iki Rectangle'ı bağlar. isExpanded değiştiğinde, SwiftUI bu iki durum arasındaki geçişi animasyonla gösterir ve dikdörtgenin boyut ve konum değişikliklerini düzgün bir şekilde sağlar.