Sobes.tech
Middle

SwiftUI'de matchedGeometryEffect nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

SwiftUI'deki matchedGeometryEffect, görünümlerin boyut ve konum değişikliklerini farklı hiyerarşiler veya konteynerler arasında hareket ederken pürüzsüzce animasyon yapmasını sağlayan bir modifikatördür.

Temel ilkeler:

  • Kimlik eşleştirmesi: Geçiş sırasında animasyon yapmak istediğiniz görünümler için aynı id'yi belirtirsiniz.
  • Kaynak ve hedef: Bu görünümleri birleştiren bir isim alanı (namespace) belirtirsiniz.
  • Otomatik animasyon: SwiftUI otomatik olarak ara durumları hesaplar ve bir durumdan diğerine geçişi animasyonla gösterir.

Uygulama:

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

Bu örnekte, RoundedRectangle durumu isExpanded arasında geçerken boyut ve renk değiştirir, matchedGeometryEffect ile `