Middle
Kas yra matchedGeometryEffect SwiftUI?
sobes.tech AI
Atsakymas iš AI
matchedGeometryEffect SwiftUI — tai modifikatorius, leidžiantis sklandžiai animuoti vaizdų dydžio ir padėties pokyčius jų perkėlimu tarp skirtingų hierarchijų ar konteinerių.
Pagrindiniai principai:
- Identifikatorių suderinimas: Nurodote tą patį identifikatorių (
id) vaizdams, kuriuos norite animuoti pereinant. - Šaltinis ir tikslas: Nurodote vardų erdvę (
namespace), kuri sujungia šiuos vaizdus. - Automatinė animacija: SwiftUI automatiškai apskaičiuoja tarpinę būseną ir animuoja perėjimą iš vienos būsenos į kitą.
Naudojimas:
import SwiftUI
struktūra ContentView: View {
@Namespace private var namespace
@State private var isExpanded = false
var body: some View {
VStack {
jei isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 200, height: 200)
.onTapGesture {
suAnimation {
isExpanded.toggle()
}
}
} kitaip {
RoundedRectangle(cornerRadius: 5)
.fill(Color.red)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 50, height: 50)
.onTapGesture {
suAnimation {
isExpanded.toggle()
}
}
}
}
}
}
Šiame pavyzdyje RoundedRectangle keičia dydį ir spalvą, kai keičiasi isExpanded būsena, naudojant matchedGeometryEffect su identifikatoriumi "box" ir vardų erdve namespace. SwiftUI automatiškai animuoja šiuos pokyčius.