Как сделать простую анимацию вверх-вниз в SwitfUI? - PullRequest
2 голосов
/ 21 марта 2020

Я хочу сделать текст "Привет, мир!" плавайте вверх и вниз, медленно, без остановки, как только появится вид.

import SwiftUI

struct animate: View {
    var body: some View {
        Text("Hello, World!")
    }
}

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Здесь возможен простой подход. Протестировано с Xcode 11.4 / iOS 13.4. Конечно параметры могут быть настроены по необходимости.

demo

struct BoncingView: View {
    @State private var bouncing = false
    var body: some View {
        Text("Hello, World!")
            .frame(maxHeight: .infinity, alignment: bouncing ? .bottom : .top)
            .animation(Animation.easeInOut(duration: 5.0).repeatForever(autoreverses: true))
            .onAppear {
                self.bouncing.toggle()
            }
    }
}
1 голос
/ 21 марта 2020

наверняка есть лучшие и более элегантные способы ее решения, но один из них будет:

struct ContentView: View {


    @State var y : CGFloat = 100
    @State var addThis: CGFloat = 100


    var body: some View {
        Text("Hello, World!")
            .position(x: 100, y: y)
            .onAppear() {
                Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
                    withAnimation() {
                        self.addThis = -self.addThis
                        self.y = self.y + self.addThis
                    }
                }
        }
    }
}
...