Sobes.tech
Junior — Middle

Jak będą się zmieniały rozmiary View podczas animacji, gdy jej frame podwoi się w połowie okresu animacji?

sobes.tech AI

Odpowiedź od AI

Jeśli podczas animacji ramka View podwaja się w rozmiarze w połowie okresu animacji, rozmiary View będą się zmieniać w następujący sposób:

  • W pierwszej połowie animacji rozmiary View będą stopniowo zwiększać się od początkowego do podwójnego.
  • W drugiej połowie animacji rozmiary pozostaną na nowym, powiększonym poziomie (jeśli animacja nie przewiduje odwrotnej zmiany).

Oznacza to, że jeśli całkowity czas trwania animacji to T, to w czasie T/2 ramka zwiększy się dwukrotnie, a następnie w pozostałym czasie T/2 rozmiar będzie stały.

Jeśli animacja jest ustawiona na ciągłe zmiany, zmiana rozmiaru będzie liniowa lub zgodnie z ustaloną krzywą (ease-in, ease-out) w pierwszej połowie czasu, a potem się ustabilizuje.

Przykład w Swift z UIView.animate:

UIView.animate(withDuration: totalDuration) {
    UIView.animateKeyframes(withDuration: totalDuration, delay: 0, options: [], animations: {
        UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.5) {
            view.frame.size = CGSize(width: view.frame.width * 2, height: view.frame.height * 2)
        }
        UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5) {
            // Rozmiary pozostają stałe
        }
    })
}

W związku z tym, powiększenie rozmiaru zachodzi tylko w pierwszej połowie animacji.