Объедините весеннюю анимацию с 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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