animateButton()
作为local func
工作得很好,但是当我将它移动到另一个swift文件中以在不同的Views
上使用它时,它就坏了。
我在非本地函数中尝试了@State/@Binding
和var isPressed = isPressed
,但它不工作。我也试过使用inout
,但DispatchQueue
似乎不喜欢它。
struct ContentView: View {
@State private var isPressed = false
var body: some View {
Text("Tap on me")
.onTapGesture { animateButton() }
Button("I'm a button", action: {})
.scaleEffect(isPressed ? 1.20 : 1)
.animation(.easeInOut, value: isPressed)
}
private func animateButtom() {
isPressed = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.20) {
isPressed = false
}
}
}
你有什么想法,使它的工作作为一个non-local func
?谢谢!
1条答案
按热度按时间hrysbysz1#
您需要将
isPressed
作为参数传递,并将该参数设置为Binding
,以便函数中的更改将更新@State
属性并将调用更改为