Как узнать текущую длительность анимации

Порой во время работы с анимациями UIView.animate(withDuration:animations:) и другими из семейства методов UIView, бывет нужно узнать внутри методов, вызываемых в блоке анимации, какая же длительность используется прямо сейчас — особенно если вкладываешь одну анимацию в другую или вызовы методов выстраиваются в «глубокую» цепочку. Можно не передавать параметры явно! В этом поможет свойство UIView.inheritedAnimationDuration:

UIView.animate(withDuration: 0.5, animations: {
    let currentDuration = UIView.inheritedAnimationDuration
    print("Длительность текущей анимации: \(currentDuration)")
})

Свойство класса UIView.inheritedAnimationDuration возвращает унаследованную продолжительность текущей анимации.

Если в текущем моменте анимации нет — вернётся 0.

Удобно использовать для синхронизации вложенных анимаций без жёсткого указания времени, его передачи или использования других связывающих объектов или кода.

Такой подход делает код гибче и избавляет от “магических чисел”. Вложенные анимации автоматически подстраиваются под родительскую, и всё работает плавно.


Опубликовано

в

от

Метки: