Middle
Mis on matchedGeometryEffect SwiftUI-s?
sobes.tech AI
Vastus AI-lt
matchedGeometryEffect SwiftUI-s on modifikaator, mis võimaldab sujuvalt animatsioonida vaadete suuruse ja asukoha muutusi nende liikumisel erinevate hierarhiate või konteinerite vahel.
Põhiprintsiibid:
- Identifikaatorite sobitamine: Määrate sama identifikaatori (
id) vaadetele, mida soovite liikumise ajal animatsioonida. - Allikas ja siht: Määrate nimelahenduse (
namespace), mis ühendab need vaated. - Automaatne animatsioon: SwiftUI arvutab automaatselt vahepealsed olekud ja animatsioonib ülemineku ühest olekust teise.
Kasutamine:
import SwiftUI
struktuur ContentView: View {
@Namespace private var namespace
@State private var isExpanded = false
var body: some View {
VStack {
kui isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 200, height: 200)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
} muidu {
RoundedRectangle(cornerRadius: 5)
.fill(Color.red)
.matchedGeometryEffect(id: "box", in: namespace)
.frame(width: 50, height: 50)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
}
}
}
}
Selles näites muudab RoundedRectangle suurust ja värvi, kui isExpanded olek muutub, kasutades matchedGeometryEffect koos identifikaatoriga "box" ja nimelahendusega namespace. SwiftUI automaatselt animatsioonib need muutused.