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 significantly simplifies creating complex view transformation animations compared to manually calculating and animating frame parameters.