SwiftUI: matchedGeometryEffect не работает во время навигации

Я хотел бы перейти на другой экран и плавно анимировать мой вид в новом положении на новом экране (как это делает Hero). В этой статье предполагается, что это возможно. Однако это вообще не работает, я получаю обычную анимацию навигации (xcode 15.0 ios17):

      struct ContentView: View {
    var imageNames = ["circle", "cloud"]

    @Namespace var n

    var body: some View {
        NavigationStack {
            List {
                ForEach(imageNames) { name in
                    NavigationLink {
                        ZStack {
                            Color.blue.opacity(0.3)
                            Image(systemName: name)
                                .resizable()
                                .frame(width: 200, height: 200)
                                .matchedGeometryEffect(id: name, in: n)
                        }
                    } label: {
                        Image(systemName: name)
                            .resizable()
                            .frame(width: 50, height: 50)
                            .padding()
                            .matchedGeometryEffect(id: name, in: n)
                    }
                    
                }
            }
        }
   }
}

extension String: Identifiable {
    public var id: String { self }
}

Это баг или может я что-то упускаю?..

PS Я понимаю, что в данном случае мне не нужен настоящий второй экран, но реальный пример гораздо сложнее.

0 ответов

Другие вопросы по тегам