Middle
Τι είναι το matchedGeometryEffect και πώς το χρησιμοποιείτε στο SwiftUI;
sobes.tech AI
Απάντηση από AI
Το matchedGeometryEffect είναι ένας τροποποιητής στο SwiftUI που επιτρέπει την ομαλή κινούμενη αλλαγή του μεγέθους και της θέσης μιας προβολής κατά τη μετάβαση μεταξύ διαφορετικών καταστάσεων ή ιεραρχιών προβολών. Συγχρονίζει τη γεωμετρία (μέγεθος και θέση) των προβολών σε διαφορετικά μέρη της ιεραρχίας, δημιουργώντας ένα εφέ "ταίριασμα".
Χρήση:
-
Ορισμός
idκαι χώρου κινούμενων εικόνων:- Ανάθεση ενός μοναδικού
idσε όλες τις προβολές που πρέπει να συγχρονιστούν, χρησιμοποιώντας τον τροποποιητήmatchedGeometryEffect. - Ορισμός
namespace(χώρος ονομάτων). Τοnamespaceσυνδέει τις προβολές που πρέπει να κινούνται μαζί. Συνήθως, χρησιμοποιείται η διακόσμηση@Namespace private var namespace.
- Ανάθεση ενός μοναδικού
-
Εφαρμογή στις προβολές:
- Εφαρμόστε το
matchedGeometryEffectσε κάθε προβολή που συμμετέχει στην κινούμενη εικόνα, αναφέροντας το ίδιοidκαιnamespace. - Αλλάξτε την ορατότητα ή τη θέση των προβολών, π.χ., χρησιμοποιώντας συνθήκες
if/elseή αλλάζοντας την κατάσταση που επηρεάζει τη διάταξη. Το SwiftUI αυτοματοποιεί τη μετάβαση.
- Εφαρμόστε το
struct ContentView: View {
@Namespace private var animationNamespace // Δήλωση χώρου ονομάτων
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Εφαρμογή με id και namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Εφαρμογή με το ίδιο id και namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Χρήση μεAnimation για ομαλή μετάβαση
isExpanded.toggle()
}
}
}
}
}
Βασικά σημεία:
- Το ίδιο
idκαιnamespaceγια τις αντίστοιχες προβολές. - Οι αλλαγές πρέπει να γίνονται εντός του μπλοκ της κινούμενης εικόνας (π.χ., με
withAnimation). - Επιτρέπει τη δημιουργία σύνθετων μεταβάσεων μεταξύ διαφορετικών καταστάσεων διάταξης.
- Μπορεί να χρησιμοποιηθεί με διάφορους τροποποιητές που επηρεάζουν το μέγεθος και τη θέση (
frame,padding,offset, κ.λπ.).
Το matchedGeometryEffect απλοποιεί σημαντικά τη δημιουργία σύνθετων κινούμενων μετασχηματισμών προβολών σε σύγκριση με τον χειροκίνητο υπολογισμό και την κινούμενη εικόνα των παραμέτρων του πλαισίου.