Swiftui 如何设置嵌套在“.navigationBarItems”中的按钮的动画`
我试着在按钮被点击时设置它的动画。到目前为止,以下代码仍然有效Swiftui 如何设置嵌套在“.navigationBarItems”中的按钮的动画`,swiftui,Swiftui,我试着在按钮被点击时设置它的动画。到目前为止,以下代码仍然有效 NavigationView { List { Button(action: { self.showDetail.toggle() }) { Image(systemName: "chevron.right.circle") .imageScale(.large)
NavigationView {
List {
Button(action: {
self.showDetail.toggle()
}) {
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.rotationEffect(.degrees(showDetail ? 90 : 0))
.scaleEffect(showDetail ? 1.5 : 1)
.padding()
.animation(.spring())
}
}
}
但是,当我将它移动到NavigationView
的navigationBarItems
中时,它停止工作;它只是捕捉到大小和旋转。我该如何解决这个问题
var body: some View {
NavigationView {
List {
Text("Does not work")
}
.navigationBarItems(trailing:
Button(action: {
self.showDetail.toggle()
}) {
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.rotationEffect(.degrees(showDetail ? 90 : 0))
.scaleEffect(showDetail ? 1.5 : 1)
.padding()
.animation(.spring())
}
)
}
}
有些奇怪的事情正在发生。如果您在图像中添加一个onAppear(),并将某个内容记录到控制台,您将看到每次点击它时它的闭包都会执行。似乎它每次都会被破坏和重新创建,这可能是导致动画问题的原因-(bug?我明白了。我想这是意料之中的事,因为SwiftUI仍处于测试阶段。要么是这样,要么就是这样。我想我们会在几个月后发现一些奇怪的事情正在发生。如果你添加一个onAppear()您将看到,每次点击它时,它的闭包都会执行。它似乎每次都会被破坏和重新创建,这可能是导致动画问题的原因-(bug?我明白了。我想这是意料之中的事,因为SwiftUI仍处于测试阶段。要么是有意的,要么是有意的。我想我们会在几个月后发现