Чтобы выполнить Spring Animation, вы меняете blendDuration, но мы также должны изменить параметр response
следующим образом:
struct Spring_BlendDuration: View {
@State private var change = false
@State private var blendDuration = 100.0
@State private var response = 0.5
var calcResponseTime: Double {
(blendDuration / 200.0)
}
var body: some View {
VStack(spacing: 20) {
Circle()
.foregroundColor(.green)
.scaleEffect(change ? 0.2 : 1)
.animation(.spring(response: response, dampingFraction: 0.5, blendDuration: blendDuration))
HStack {
Image(systemName: "hare")
Slider(value: $blendDuration, in: 0...200) {_ in
self.response = self.calcResponseTime
}
Image(systemName: "tortoise")
}.foregroundColor(.green).padding()
Button("Change") {
self.change.toggle()
}.font(.title)
}
}
}
В соответствии с файлом определения Apple для весенней анимации сказано:
- реакция: жесткость пружины, определяемая как приблизительная продолжительность в секундах. Нулевое значение требует бесконечно жесткой пружины, пригодной для езды