Middle
Ce este matchedGeometryEffect în SwiftUI?
sobes.tech AI
Răspuns de la AI
matchedGeometryEffect în SwiftUI este un modifier care permite animarea lină a schimbării dimensiunii și poziției vizualizărilor în timpul deplasării lor între diferite ierarhii sau containere.
Principii de bază:
- Potrivirea identificatorilor: Indicați același
idpentru vizualizările pe care doriți să le animați în timpul tranziției. - Sursa și destinația: Specificați un spațiu de nume (
namespace) care le unește. - Animare automată: SwiftUI calculează automat stările intermediare și animează tranziția de la o stare la alta.
Aplicare:
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()
}
}
}
}
}
}
În acest exemplu, RoundedRectangle își schimbă dimensiunea și culoarea în timpul comutării între stările isExpanded, folosind matchedGeometryEffect cu identificatorul `