Middle
Ի՞նչ է matchedGeometryEffect-ը SwiftUI-ում։
sobes.tech AI
Պատասխան AI-ից
matchedGeometryEffect-ը SwiftUI-ում մի փոփոխիչ է, որը թույլ է տալիս հոսունորեն անիմացնել տեսքավորումների չափի և դիրքի փոփոխությունը նրանց միջև տարբեր հիերարխիաներում կամ կոնտեյներներում տեղափոխելիս:
Հիմնական սկզբունքներ՝
- Համապատասխանության նույնականացուցիչներ: Դուք նշում եք նույն
id-ն այն տեսքավորումների համար, որոնք ցանկանում եք անիմացնել անցումի ժամանակ: - Աղբյուր և նպատակ: Դուք նշում եք
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-ը "box" նույնականացուցիչով և namespace-ով։ SwiftUI-ն ավտոմատ կերպով անիմացնում է այս փոփոխությունը։