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