Порой во время работы с анимациями UIView.animate(withDuration:animations:)
и другими из семейства методов UIView
, бывет нужно узнать внутри методов, вызываемых в блоке анимации, какая же длительность используется прямо сейчас — особенно если вкладываешь одну анимацию в другую или вызовы методов выстраиваются в «глубокую» цепочку. Можно не передавать параметры явно! В этом поможет свойство UIView.inheritedAnimationDuration
:
UIView.animate(withDuration: 0.5, animations: {
let currentDuration = UIView.inheritedAnimationDuration
print("Длительность текущей анимации: \(currentDuration)")
})
Свойство класса UIView.inheritedAnimationDuration
возвращает унаследованную продолжительность текущей анимации.
Если в текущем моменте анимации нет — вернётся 0.
Удобно использовать для синхронизации вложенных анимаций без жёсткого указания времени, его передачи или использования других связывающих объектов или кода.
Такой подход делает код гибче и избавляет от “магических чисел”. Вложенные анимации автоматически подстраиваются под родительскую, и всё работает плавно.