Ի՞նչ է matchedGeometryEffect-ը և ինչպես է այն օգտագործվում SwiftUI-ում։
sobes.tech AI
Պատասխան AI-ից
matchedGeometryEffect SwiftUI-да истифода мешавад барои эҷоди анимацияи ҳамвор дар байни ду намоиш, ки як унсури визуалӣ дар макетҳои гуногунро намояндагӣ мекунанд. Он геометрияи намоишро дар як ҳолат бо геометрияи намоиши дигар дар ҳолати дигар пайваст мекунад, ки ба SwiftUI имкон медиҳад автоматӣ анимация кардани тағирот.
Ин бо истифода аз иловаи .matchedGeometryEffect ба ҳар ду намоиш, ки бояд пайваст шаванд, амалӣ мешавад. Ин илова се параметр мегирад:
id: Идентификатори беназири барои пайваст кардани намоишҳо.in: Пространство номи (Namespace), ки дар он идентификатор сабт шудааст. Одатан бо ёрии@Namespaceэҷод мешавад.properties: Ҷамъе аз хусусиятҳои геометрия, ки бояд аниматсия шаванд (масалан,.position,.size,.frame).
Маслиҳат барои истифода:
struct ContentView: View {
@Namespace private var animation
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
Rectangle()
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animation)
.frame(width: 200, height: 200)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
} else {
Rectangle()
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animation)
.frame(width: 50, height: 50)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
}
}
}
}
Дар ин мисол, .matchedGeometryEffect ду Rectangle-ро бо як id ("myShape") ва дар як простор номи (animation) пайваст мекунад. Вақте ки isExpanded тағйир меёбад, SwiftUI гузаришро байни ду ҳолати намоишҳоро аниматсия мекунад, ки натиҷааш эффекти ҳамвор дар тағйирёбии андоза ва ҷойгиршавии росткунҷаро эҷод мекунад.