რა არის matchedGeometryEffect და როგორ გამოიყენება SwiftUI-ში?
sobes.tech AI
პასუხი AI-სგან
matchedGeometryEffect SwiftUI-ში გამოიყენება სუფთა ანიმაციის შესაქმნელად ორ წარმოდგენას შორის, რომლებიც წარმოადგენენ ერთ ვიზუალურ ელემენტს სხვადასხვა განლაგებებში. იგი აკავშირებს ერთ მდგომარეობაში წარმოდგენილი ელემენტის გეომეტრიას სხვა მდგომარეობაში, რაც SwiftUI-ს საშუალებას აძლევს ავტომატურად ანიმიროს ცვლილებები.
გამოყენება ხდება ორივე წარმოდგენის მიმართ .matchedGeometryEffect მორგებით, რომლებიც უნდა იყოს დაკავშირებული. მორგებელი იღებს სამი პარამეტრს:
id: უნიკალური იდენტიფიკატორი დაკავშირებული წარმოდგენებისთვის.in: სახელობის სივრცე (Namespace), სადაც რეგისტრირებულია იდენტიფიკატორი. ჩვეულებრივ, შექმნილია@Namespace-ის გამოყენებით.properties: გეომეტრიის თვისებები, რომლებიც უნდა იყოს ანიმირებული (მაგალითად,.position,.size,.frame).
გამოყენების მაგალითი:
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()
}
}
}
}
}
}
ამ მაგალითში, .matchedGeometryEffect აკავშირებს ორ Rectangle-ს ერთსა და იმავე id-ს ("myShape") და ერთსა და იმავე სახელობის სივრცეში (animation). როდესაც isExpanded იცვლება, SwiftUI ავტომატურად ანიმირებს ორ მდგომარეობას შორის გადასვლას, ქმნის სუფთა ცვლილების ეფექტს ზომასა და პოზიციაში.