Sobes.tech
Junior — Middle

Jak se budou měnit velikosti View během animace, když se jeho frame zdvojnásobí v polovině doby animace?

sobes.tech AI

Odpověď od AI

Pokud se během animace rámeček View zdvojnásobí ve velikosti v polovině periody animace, velikosti View se změní následovně:

  • Během první poloviny animace se velikosti View plynule zvětší od původní velikosti na dvojnásobek.
  • Ve druhé polovině animace zůstanou velikosti na nové zvětšené úrovni (pokud animace nepočítá s opačnou změnou).

To znamená, pokud je celková délka animace T, pak v čase T/2 se rámeček zdvojnásobí, a v zbylém čase T/2 bude velikost konstantní.

Pokud je animace nastavena na kontinuální změnu, bude změna velikosti lineární nebo podle dané křivky (ease-in, ease-out) během první poloviny času, a poté se stabilizuje.

Příklad v Swift s 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) {
            // Velikosti zůstanou konstantní
        }
    })
}

Tedy, zvětšení velikosti dochází pouze v první polovině animace.