如何定义和使用@namespace var a view

问题描述 投票:0回答:1

完全有可能在视图外部定义@namespace var并将其传递给视图。例如,在

State
类中这样做?

I包括了一个匹配动画的基线代码。我尝试了几件事(例如

this),没有成功,这意味着动画不匹配。我已经看到了一些解决方案,但是@namespace var始终是我无法做的视图属性。 import SwiftUI import PlaygroundSupport enum Flow { case initial case searching } class State: ObservableObject { @Published var flow: Flow = .initial } let state = State() struct Container: View { @Namespace var namespace @ObservedObject var state: State var body: some View { VStack { SubView1(state: state, namespace: namespace) SubView2(state: state, namespace: namespace) } .onTapGesture { withAnimation(.spring()) { if state.flow == .initial { state.flow = .searching } else { state.flow = .initial } } } .frame(width: 300, height: 300) } } struct SubView1: View { @ObservedObject var state: State var namespace: Namespace.ID var body: some View { HStack { Text("Lorem") Spacer() if state.flow == .initial { Text("Ipsum") .matchedGeometryEffect(id: "id", in: namespace) Text("|") } Image(systemName: "person.circle.fill") } } } struct SubView2: View { @ObservedObject var state: State var namespace: Namespace.ID var body: some View { VStack { Text("Headline") if state.flow == .searching { Text("Ipsum") .matchedGeometryEffect(id: "id", in: namespace) } } } } PlaygroundPage.current.setLiveView(Container(state: state))

	
swiftui matchedgeometryeffect swiftui-matchedgeometryeffect
1个回答
0
投票
Namespace

是一个

DynamicProperty
,并且仅在a
DynamicProperty
中起作用,因为它们在更新时获得了价值。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.