Sobes.tech
Middle

matchedGeometryEffect nima va uni SwiftUI da qanday ishlatish mumkin?

sobes.tech AI

AIdan javob

matchedGeometryEffect — bu SwiftUI'da ishlatiladigan modifikator bo'lib, u turli holatlar yoki ko'rinishlar hierarxiyasi o'rtasida ko'rinishning o'lchami va joylashishini silliq animatsiya qilish imkonini beradi. U turli hierarxiyalardagi ko'rinishlarning geometriyasini (o'lcham va joylashuv) sinxronlashtiradi va "mos kelish" effektini yaratadi.

Foydalanish:

  1. id va animatsiya bo'shlig'ini aniqlash:

    • Sinxronlashtirilishi kerak bo'lgan barcha ko'rinishlarga yagona id tayinlang va matchedGeometryEffect modifikatoridan foydalaning.
    • namespace (nomlar maydoni) ni ko'rsating. namespace birga animatsiya qilinadigan ko'rinishlarni bog'laydi. Odatda, @Namespace private var namespace annotatsiyasi ishlatiladi.
  2. Ko'rinishlarga qo'llash:

    • Har bir ishtirok etadigan ko'rinishga matchedGeometryEffect ni qo'llang va bir xil id va namespace ni ko'rsating.
    • Ko'rinishlarning ko'rinishini yoki joylashuvini o'zgartiring, masalan, if/else shartlari yoki holatni o'zgartirish orqali. SwiftUI avtomatik ravishda o'tishni animatsiya qiladi.
struct ContentView: View {
    @Namespace private var animationNamespace // Nomlar maydonini e'lon qilish
    @State private var isExpanded = false

    var body: some View {
        VStack {
            if isExpanded {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.blue)
                    .matchedGeometryEffect(id: "myShape", in: animationNamespace) // id va namespace bilan qo'llash
                    .frame(width: 300, height: 200)
            } else {
                RoundedRectangle(cornerRadius: 10)
                    .fill(Color.red)
                    .matchedGeometryEffect(id: "myShape", in: animationNamespace) // shuningdek, id va namespace bilan qo'llash
                    .frame(width: 50, height: 50)
            }

            Button("Toggle Size") {
                withAnimation { // Yumuşoq o'tish uchun withAnimation dan foydalanish
                    isExpanded.toggle()
                }
            }
        }
    }
}

Asosiy nuqtalar:

  • Bir xil id va namespace mos keladigan ko'rinishlar uchun.
  • O'zgarishlar animatsiya blokida bo'lishi kerak (masalan, withAnimation bilan).
  • Murakkab o'tishlarni yaratishga imkon beradi.
  • Turli modifikatorlar bilan ishlatilishi mumkin, ular o'lcham va joylashuvga ta'sir qiladi (frame, padding, offset va boshqalar).

matchedGeometryEffect murakkab transformatsiya animatsiyalarini qo'lda hisoblash va animatsiya qilishga nisbatan juda osonlashtiradi.