Animation 从实际大小(而不是0 SwiftUI)缩放形状
我正在尝试为我正在使用swiftui制作的应用程序制作pulse动画。我想要一个中心灰色的圆圈。目前,外圆从0开始缩放,但我希望它们从中间圆大小开始。 这是我当前的代码:Animation 从实际大小(而不是0 SwiftUI)缩放形状,animation,swiftui,swift5,shapes,pulse,Animation,Swiftui,Swift5,Shapes,Pulse,我正在尝试为我正在使用swiftui制作的应用程序制作pulse动画。我想要一个中心灰色的圆圈。目前,外圆从0开始缩放,但我希望它们从中间圆大小开始。 这是我当前的代码: import SwiftUI struct Pulse: View { @State var animate = false @State private var scale: CGFloat = 2 var body: some View { ZStack
import SwiftUI
struct Pulse: View {
@State var animate = false
@State private var scale: CGFloat = 2
var body: some View {
ZStack
{
Circle()
.fill(Color.black)
.frame(width: 130, height: 130)
Circle()
.stroke(Color.red.opacity(0.1), lineWidth: 5)
.frame(width: 300, height: 300)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.stroke(Color.red.opacity(0.15), lineWidth: 5)
.frame(width: 266, height: 266)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.stroke(Color.red.opacity(0.2), lineWidth: 5)
.frame(width: 232, height: 232)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.stroke(Color.red.opacity(0.3), lineWidth: 5)
.frame(width: 198, height: 198)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.stroke(Color.red.opacity(0.35), lineWidth: 5)
.frame(width: 164, height: 164)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.stroke(Color.red.opacity(0.4), lineWidth: 5)
.frame(width: 130, height: 130)
.scaleEffect(self.animate ? 1 : 0)
Circle()
.fill(Color.gray)
.frame(width: 130, height: 130)
}
.frame(width: 290, height: 290, alignment: .center)
.onAppear(perform: {
self.animate.toggle()
})
.animation(Animation.linear(duration: 6).repeatForever(autoreverses: true))
.ignoresSafeArea()
}
}
内圈和外圈的大小之比为
130/300
。在最小值处,您希望宽度和高度为300
的圆为130
改变所有这些:
.scaleEffect(self.animate ? 1 : 0)
致:
.scaleEffect(self.animate ? 1 : 130 / 300)