
프론트엔드
스윙 iOS에서 더 개선된 애니메이션 시스템 만들기
두줄요약
iOS 애니메이션의 예기치 않은 동작 원인을 CATransaction과 레이아웃 생명주기 관점에서 정리했습니다. CADisplayLink 기반 SWAnimation으로 진행도 제어, 취소, FPS 측정까지 확장한 사례를 소개했습니다.
핵심 내용
- iOS에서 UIView.animate와 UIViewPropertyAnimator가 CATransaction 기반으로 동작해 예기치 않은 레이아웃 전염, 비동기 UI 변경 애니메이션, 애니메이션 가능한 속성 제한, 취소 어려움이 발생하는 문제 정리
- CADisplayLink를 중앙 관리하는 DisplayLinkManager와 SWAnimation을 만들어 progress 기반으로 애니메이션을 직접 제어하고, Curve로 보간과 색상 계산을 일원화
- 동일 구조를 FPSWatcher로 확장해 화면 FPS 측정과 성능 관리에도 활용
적용해볼 점
- 애니메이션 로직을 UIKit 기본 동작에 맡기지 말고 진행도 계산과 취소 제어를 분리해 설계
- 레이아웃 갱신과 비동기 UI 변경이 섞이는 환경에서 애니메이션 영향 범위 관리
- CADisplayLink 기반 공통 인프라로 애니메이션과 성능 측정을 함께 운영
