Spring Animation: Что делает параметр blendDuration? - PullRequest
0 голосов
/ 01 октября 2019

В файле определения Apple для анимации пружины написано:

blendDuration: длительность в секундах, в течение которой можно интерполировать изменения значения отклика пружины.

Пример кода

struct Spring_BlendDuration: View {
    @State private var change = false
    @State private var blendDuration = 100.0

    var body: some View {
        VStack(spacing: 20) {
            Circle()
                .foregroundColor(.green)
                .scaleEffect(change ? 0.2 : 1)
                .animation(.spring(response: 1, dampingFraction: 0.5, blendDuration: blendDuration))

            HStack {
                Image(systemName: "hare")
                Slider(value: $blendDuration, in: 0...200)
                Image(systemName: "tortoise")
            }.foregroundColor(.green).padding()

            Button("Change") {
                self.change.toggle()
            }.font(.title)
        }
    }
}

Как это выглядит

Animation

Я просто не вижу никакой разницы.

1 Ответ

0 голосов
/ 01 октября 2019

Чтобы выполнить Spring Animation, вы меняете blendDuration, но мы также должны изменить параметр response следующим образом:

struct Spring_BlendDuration: View {
    @State private var change = false
    @State private var blendDuration = 100.0
    @State private var response = 0.5
    var calcResponseTime: Double {
        (blendDuration / 200.0)
    }

    var body: some View {
        VStack(spacing: 20) {

            Circle()
                .foregroundColor(.green)
                .scaleEffect(change ? 0.2 : 1)
                .animation(.spring(response: response, dampingFraction: 0.5, blendDuration: blendDuration))

            HStack {
                Image(systemName: "hare")
                Slider(value: $blendDuration, in: 0...200) {_ in

                    self.response =  self.calcResponseTime
                }
                Image(systemName: "tortoise")
            }.foregroundColor(.green).padding()

            Button("Change") {
                self.change.toggle()
                       }.font(.title)
        }
    }
}

В соответствии с файлом определения Apple для весенней анимации сказано:

  • реакция: жесткость пружины, определяемая как приблизительная продолжительность в секундах. Нулевое значение требует бесконечно жесткой пружины, пригодной для езды
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...