Sobes.tech
Middle

SwiftUI-деги matchedGeometryEffect деген эмне?

sobes.tech AI

AIден жооп

matchedGeometryEffect SwiftUIде — бул модификатор, ал сизге көрүнүштөрдүн өлчөмүн жана жайгашкан жерин алардын ар башка иерархиялар же контейнерлер арасында которулганда жогорку деңгээлде анимациялоого мүмкүндүк берет.

Негизги принциптер:

  • Идентификаторлорду салыштыруу: Сиз өтүү учурунда анимациялоону каалаган көрүнүштөр үчүн бирдей идентификаторду (id) көрсөтөсүз.
  • Көз жана максат: Бул көрүнүштөрдү бириктирген аянтча (namespace) көрсөтөсүз.
  • Автоматтык анимация: SwiftUI автоматтык түрдө аралык абалдарды эсептейт жана бир абалдан экинчи абалга өтүүнү анимациялайт.

Колдонуу:

import SwiftUI

структура ContentView: View {
    @Namespace жеке айнымалуу var namespace
    @State жеке айнымалуу isExpanded = false

    var body: some View {
        VStack {
            эгер isExpanded {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "box", in: namespace)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        withAnimation {
                            isExpanded.toggle()
                        }
                    }
            } башкача {
                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 автоматтык түрдө бул өзгөрүүнү анимациялайт.