Анимировать прямоугольник, чтобы он шел вверх / вниз - PullRequest
0 голосов
/ 16 апреля 2020

Я создал линию на своей камере, которая проста Rectangle(), и теперь я застрял там, где хочу, чтобы она двигалась вверх и вниз. Линия должна двигаться от верхней камеры контейнера к нижней и наоборот, так что она имитирует сканер.

Я полагаю, что это можно было бы сделать, переместив Rectangle() по оси y, обеспечивая положительные значения, пока сканер не достигнет определенного значения position, а затем предоставив отрицательные значения y, пока снова не достигнет определенного положения с постоянным или бесконечным повторением ,

Возможно, это просто, но я все еще новичок в SwiftUI и вообще iOS, поэтому я не знаю, как это сделать.

Вот изображение того, как оно выглядит сейчас: enter image description here

А вот код:

VStack {
    Spacer()
    BackgroundView()
        .padding(EdgeInsets(top: 0, leading: 0, bottom: 15, trailing: 0))
    ZStack {
        CBScanner(supportBarcode: [.ean8, .ean13, .upce])
            .interval(delay: 2.0)
            .found{
          // barcode found other code
        }
        Rectangle()
        .trim()
        .background(ColorsStatic.redish)
            .foregroundColor(ColorsStatic.redish)
            .frame(width: 350, height: 1)
    }.frame(width: 350, height: 180)
}

1 Ответ

1 голос
/ 17 апреля 2020
import SwiftUI

struct ContentView: View {

    @State private var animating = false

    var body: some View {
        VStack {
            Spacer()
            ZStack {
                Rectangle()
                    .trim()
                    .background(Color.red)
                    .foregroundColor(Color.red)
                    .frame(width: 350, height: 1)
                    .offset(y: animating ? 90 : -90)
                    .animation(Animation.linear(duration: 1).repeatForever())

            }.frame(width: 350, height: 180)
            .onAppear {
                self.animating.toggle()
            }
            .background(Color.green)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...