Связывание SwiftUI с задержками анимации - отображается только последняя анимация, если объект не находится в середине анимации, где отображаются все анимации
Похоже, что в другом вопросе кто-то дал решение, которое вы можете связать вместе с анимациями. Для меня это имеет смысл, поэтому я попробовал, и он почти работает. Пока объект не движется, отображается только последняя анимация. Однако, если я прерву текущую анимацию, все анимации будут воспроизводиться плавно. Есть ли пропущенный шаг или, возможно, я что-то неправильно настраиваю?
Вот мой тестовый код.
import SwiftUI
struct AnimObject: View {
@State var position = CGPoint(
x: AnimObject.screenWidth,
y: AnimObject.screenHeight / 2)
var body: some View {
VStack {
Circle()
.frame(width: 20, height: 20, alignment: .center)
.position(position)
Button(action: {
withAnimation(Animation.linear(duration: 1.0).delay(0.0)) {
self.position.x = CGFloat(0)
}
withAnimation(Animation.linear(duration: 1.0).delay(1.0)) {
self.position.x = AnimObject.screenWidth / 2
}
withAnimation(Animation.linear(duration: 1.0).delay(2.0)) {
self.position.x = CGFloat(0)
}
withAnimation(Animation.linear(duration: 1.0).delay(3.0)) {
self.position.x = AnimObject.screenWidth
}
}) {
Text("Button")
} // Button
} // VStack
} // body
}
extension AnimObject {
static let screenWidth = UIScreen.main.bounds.size.width
static let screenHeight = UIScreen.main.bounds.size.height
static let screenSize = UIScreen.main.bounds.size
}
struct AnimObject_Previews: PreviewProvider {
static var previews: some View {
AnimObject()
}
}