Sobes.tech
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-ն ավտոմատ կերպով անիմացնում է այս փոփոխությունը։