Core Animation을 이용한 Particle Animation

Core Animation을 이용한 Particle Animation

Safari의 ‘방해 요소 가리기(Hide Distracting Items)’처럼, iOS에서 Particle Animation을 구현해 보고자 합니다.


미리보기

CAEmitterLayer 활용 UIView 분해 애니메이션
CAEmitter Disintegrate

1. CAEmitterLayer로 간단하게 만들기

빠르고 쉽고, 코드도 짧음.
뷰와 완벽히 일치하진 않지만, 기본적인 파티클 효과를 빠르게 적용할 수 있습니다.


2. UIView 분해(Disintegrate) 애니메이션

원본 이미지를 여러 타일로 분해,
각각의 조각이 실제로 흩어지는 효과.
실제로 Safari의 효과와 가장 유사한 방식.


전체 코드 및 샘플 프로젝트

👉 GitHub에서 전체 코드 보기
(전체 동작, ViewController, tile 분할/애니메이션 등 상세 구현 포함)


실행 결과 및 비교


언제 어떤 방식을 선택해야 할까?

상황 CAEmitterLayer UIView 분해(Disintegrate)
Particle을 직접 조작해야할 때
5000개 이상 파티클 ⭐️ (성능 양호) ❌ 최적화 필요
사진/컬러 일체감 ⭐️ (완전 동일)

마치며

추후에 Metal Shader를 이용해서 GPU에서 동작하는 Particle System을 구현하고자 합니다. GPU는 병렬처리에 최적화 되어있기 때문에 Particle의 개수가 수만개가 되더라도 성능저하가 적을 것으로 기대합니다.


참고 자료