gpt4 book ai didi

ios - 动画第一次工作,但后来

转载 作者:行者123 更新时间:2023-12-01 21:58:28 24 4
gpt4 key购买 nike

尝试为 SwiftUI 设置动画看法。第一次完美运行,但后来什么也没做。self.pressed开始为 false .我将其设置为 true然后我把它切换回false .
我想放大它,然后在按下按钮时缩小它。

我在这里想念什么?

Button(action: {
withAnimation(.linear(duration: 3)) {
self.pressed = true
}
withAnimation(.linear(duration: 3)) {
self.pressed = false
}
}) {
Wedge(startAngle: .init(degrees: 270), endAngle: .init(degrees: 360))
.fill(Color.green)
.frame(width: 200, height: 200)
.offset(x: -100, y: 100)
.scaleEffect(self.pressed ? 1.2 : 1.0)
}

基本上,当我按下它时它会调整我的楔形形状,但下次按下它时它什么也不做。

我确实可以使用 DispatchQueue ,但它似乎是一个黑客:
Button(action: {
withAnimation(.linear(duration: 0.5)) {
self.pressed = !self.pressed
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
withAnimation(.linear(duration: 0.5)) {
self.pressed = !self.pressed
}
}
}) {
Wedge(startAngle: .init(degrees: 180), endAngle: .init(degrees: 270))
.fill(Color.red)
.frame(width: 200, height: 200)
.offset(x: 80, y: 80)
.scaleEffect(self.pressed ? 1.2 : 1.0)
}

第二种方法是正确的方法吗?

--

这是楔子:
struct Wedge: Shape {
let startAngle: Angle
let endAngle: Angle

func path(in rect: CGRect) -> Path {
var path = Path()
let center = CGPoint(x: rect.midX, y: rect.midY)
path.addArc(center: center,
radius: min(rect.midX, rect.midY),
startAngle: startAngle,
endAngle: endAngle,
clockwise: false )
path.addLine(to: center)
path.closeSubpath()
return path
}
}

最佳答案

可能你想要这个

Button(action: {
withAnimation(.linear(duration: 3)){
self.pressed.toggle() // << here !!
}
print("B")
}) {
...

关于ios - 动画第一次工作,但后来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60819823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com