Sobes.tech
Middle

SwiftUI'da matchedGeometryEffect nima?

sobes.tech AI

AIdan javob

matchedGeometryEffect in SwiftUI — bu modifikator, u yordamida tasvirlarning o'lchami va holatini ularning turli ierarxiyalari yoki konteynerlar orasida harakatlanayotganda silliq animatsiya qilish mumkin.

Asosiy tamoyillar:

  • Identifikatorlarni moslashtirish: Siz o'tish davomida animatsiya qilishni istagan tasvirlar uchun bir xil id ni ko'rsatasiz.
  • Manba va maqsad: Bu tasvirlarni birlashtiradigan namespace (nomlar maydoni) ni belgilaysiz.
  • Avtomatik animatsiya: SwiftUI avtomatik ravishda o'rtacha holatlarni hisoblaydi va bir holatdan ikkinchisiga o'tishni animatsiya qiladi.

Qo'llanilishi:

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()
                        }
                    }
            }
        }
    }
}

Ushbu misolda, RoundedRectangle isExpanded holatiga o'tishda o'lchami va rangi o'zgaradi, matchedGeometryEffect bilan `