Объедините весеннюю анимацию с easyInOut в SwiftUIIOS

Программируем под IOS
Anonymous
Объедините весеннюю анимацию с easyInOut в SwiftUI

Сообщение Anonymous »

Я анимирую линию по горизонтали, и это работает нормально, за исключением того, что эффект, к которому я стремлюсь, — это небольшой упругий отскок перед тем, как она поменяет стороны. Я думал, что эффект .easeInOut будет имитировать это, но он не кажется упругим. Как я могу объединить анимацию .spring так, чтобы линия подпрыгивала на долю секунды на каждом конце, прежде чем переместиться на другую сторону?

Код: Выделить всё

struct Line: Shape {
func path(in rect: CGRect) -> Path {
var path = Path()
path.move(to: CGPoint(x: 0, y: rect.size.height / 2))
path.addLine(to: CGPoint(x: rect.size.width, y: rect.size.height / 2))
return path
}
}

struct LineView: View {
let height: CGFloat
@State private var animating = false

var body: some View {
GeometryReader { geometry in
let lineWidth = geometry.size.width / 3

Line()
.stroke(Color.black, lineWidth: height)
.frame(width: lineWidth)
.offset(x: animating ? 0 : geometry.size.width - lineWidth)
.animation(.easeInOut(duration: 1.0).repeatForever(), value: animating)
.onAppear {
animating.toggle()
}
}
}
}

struct ContentView: View {
var body: some View {
VStack {
LineView(height: 5.0)
.frame(width: 200)
}
}
}
Любая помощь приветствуется.
Предполагаемый эффект (синяя линия): https://streamable.com/ijwe1w

Подробнее здесь: https://stackoverflow.com/questions/787 ... in-swiftui

Вернуться в «IOS»