Какие анимации приходилось реализовывать и с какими сложностями сталкивались
Что проверяют
Работали ли вы с анимациями глубже, чем UIView.animate, и умеете ли находить причину подтормаживания, а не подбирать параметры наугад. Следом почти всегда спрашивают, как вы измеряли плавность и чем проверяли результат.
Как отвечать
Возьмите один-два своих случая и расскажите каждый по схеме: что анимировали, чем, что пошло не так, как нашли причину, что изменилось. Опоры, которые делают рассказ предметным:
- инструмент под задачу:
UIView.animateдля простых переходов,UIViewPropertyAnimatorдля прерываемых и управляемых жестом анимаций, Core Animation (CABasicAnimation,CAKeyframeAnimation,CASpringAnimation) для слоёв,UIViewControllerAnimatedTransitioningдля своих переходов между экранами, в SwiftUIwithAnimationиmatchedGeometryEffect; - типичная трудность: анимация констрейнтов (поменять константу и вызвать
layoutIfNeeded()внутри блока), прерывание анимации жестом, рывок при смене направления; - производительность: тени без
shadowPathиcornerRadiusвместе сmasksToBoundsдают offscreen rendering, а на экранах 120 Гц на кадр остаётся около 8 мс; - диагностика: Instruments с шаблоном Animation Hitches, подсветка offscreen-отрисовки в отладочных опциях симулятора;
- доступность: при включённом Reduce Motion (
UIAccessibility.isReduceMotionEnabled) движение заменяют на плавное затухание.
Цифры берите свои: сколько было хитчей до и после, на каком устройстве мерили. Если серьёзных анимаций в проекте не было, честно скажите об этом и расскажите про пет-проект или разберите, как сделали бы конкретный эффект и чем проверили бы плавность.
Где спотыкаются
Не различают модельный и презентационный слой. После CABasicAnimation слой прыгает в исходное состояние, и это «чинят» через fillMode = .forwards и isRemovedOnCompletion = false вместо того, чтобы выставить модели итоговое значение.
Говорят «оптимизировал, стало плавнее», не называя причину. Интервьюеру важна цепочка: симптом, замер, найденная причина, исправление.
Приводят результат вроде «пользователи оценили», который никто не измерял. Лучше меньше, но проверяемое.