gpt4 book ai didi

swift - 如何使用 swiftUI 创建平滑的颜色变化动画? (有问题的例子)

转载 作者:行者123 更新时间:2023-12-04 13:09:30 30 4
gpt4 key购买 nike

我有一个播放/暂停按钮,按下时会发生变化。目前它只是淡入和淡出,但我希望它执行一个动画,看起来新颜色流过旧颜色。 enter image description here

enter image description here

enter image description here

enter image description here

这是我目前所拥有的:

if(meditationViewModel.timerIsRunning){
HStack{
Image(systemName: "pause")
Text("STOP")
.bold()
}
.padding()
.foregroundColor(.white)
.background(Color.red)
.cornerRadius(25)
.shadow(radius: 20)
}else{
HStack{
Image(systemName: "play")
Text("PLAY")
.bold()
}
.padding()
.foregroundColor(.white)
.background(Color.green)
.cornerRadius(25)
}

meditationViewModel.timerIsRunning 的更改发生在别处。

最佳答案

这是一个可能方法的演示 - 只需在文本和不透明背景之间使用一些形状(在本例中为圆形)并根据状态移动它。

使用 Xcode 12.4/iOS 14.4 准备

注意:您可以只使用点击手势而不是按钮并调整所有参数和颜色,但总的来说,想法保持不变

demo

struct DemoView: View {
@State private var playing = false
var body: some View {
Button(action: { playing.toggle() }) {
HStack{
Image(systemName: playing ? "pause" : "play")
Text(playing ? "STOP" : "PLAY")
.bold()
}
.background(
Circle().fill(Color.purple)
.frame(width: 160, height: 160, alignment: .leading)
.blur(radius: 3)
.offset(x: playing ? 0 : -160, y: -40)
.animation(.easeInOut(duration: 1), value: playing)
)
.padding()
.foregroundColor(.white)
.background(Color.green)
.cornerRadius(25)
.clipped()
.shadow(radius: 20)
}
}
}

关于swift - 如何使用 swiftUI 创建平滑的颜色变化动画? (有问题的例子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67073120/

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