Sobes.tech
Middle

რა არის matchedGeometryEffect და როგორ გამოიყენოთ იგი SwiftUI-ში?

sobes.tech AI

პასუხი AI-სგან

matchedGeometryEffect — SwiftUI-да қолданылатын модификатор, ол көріністің өлшемі мен орнын тегіс анимациялау үшін пайдаланылады, ол түрлі жағдайлар немесе көріністердің иерархиялары арасында өтуде. Ол геометрияны (өлшемі мен орны) әртүрлі бөлімдерде синхрондайды және "сәйкестік" әсерін жасайды.

Қолдану:

  1. id және анимациялық кеңістік анықтау:

    • Барлық синхрондалатын көріністерге бірегей id тағайындау керек, оны matchedGeometryEffect модификаторы арқылы жасау.
    • namespace (аты кеңістігі) көрсету. namespace көріністерді біріктіреді және бірге анимациялауға мүмкіндік береді. Әдетте, @Namespace private var namespace аннотациясы пайдаланылады.
  2. Қолдану:

    • Әрбір көрініске matchedGeometryEffect қолдану, бірдей id және namespace көрсетіп.
    • Көріністердің көрінуін немесе орнын өзгерту, мысалы, if/else шарттары немесе күйді өзгерту арқылы, ол орналасуды әсер етеді. SwiftUI автоматты түрде өтуді анимациялайды.
struct ContentView: View {
    @Namespace private var animationNamespace // Атаулар кеңістігін жариялау
    @State private var isExpanded = false

    var body: some View {
        VStack {
            if isExpanded {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "myShape", in: animationNamespace) // id және namespace қолдану
                    .frame(width: 300, height: 200)
            } else {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "myShape", in: animationNamespace) // сол бір id және namespace қолдану
                    .frame(width: 50, height: 50)
            }

            Button("Toggle Size") {
                withAnimation { // плавды өтуді қамтамасыз ету үшін withAnimation қолдану
                    isExpanded.toggle()
                }
            }
        }
    }
}

Негізгі ескертпелер:

  • бірдей id және namespace қолдану салыстырылатын көріністер үшін.
  • Өзгерістер анимация блогының ішінде болуы керек (мысалы, withAnimation арқылы).
  • Бұл күрделі өтулерді жасауға мүмкіндік береді.
  • Ол әртүрлі модификаторлармен қолданылуы мүмкін, олар өлшемі мен орнын әсер етеді (frame, padding, offset және т.б.).

matchedGeometryEffect күрделі көрініс трансформацияларын жасау процесін жеңілдетеді, ол қолмен есептеу мен анимациялау параметрлерінен әлдеқайда оңай.