반응형
CAEmitterLayer란? 🤔
입자를 뿌려주는 레이어 (Emitter = 방출기)
쉽게 표현하면
→ "입자를 정의한 CAEmitterCell 들을 화면에 실제로 뿌려주는 판"
구조적 역할 정리
UIKit View Layer
↓
[ CAEmitterLayer ] → 입자 방출 담당
↓
[ CAEmitterCell ] → 입자 모양/성질 담당핵심 속성 (자주 쓰는 것만 정리)
| 속성 | 설명 | 활용 |
|---|---|---|
| emitterPosition | 입자 출발 위치 | CGPoint |
| emitterSize | 입자 출발 영역 | CGSize |
| emitterShape | 방출 형태 | .point / .line / .rectangle / .circle |
| emitterMode | 방출 방식 | .surface / .outline / .volume |
| emitterCells | 방출할 셀 목록 | [CAEmitterCell] |
| renderMode | 렌더링 방식 | .additive (빛나는 효과 추천) |
emitterShape 옵션
| 옵션 | 모양 | 설명 |
|---|---|---|
| .point | 점 | 한 점에서 나옴 |
| .line | 선 | 라인 전체에서 나옴 |
| .rectangle | 사각형 | 넓게 뿌릴 때 |
| .circle | 원 | 원 형태 방출 |
emitterMode 옵션
| 옵션 | 설명 |
|---|---|
| .points | 각 point에서 방출 |
| .outline | 윤곽선 따라 방출 |
| .surface | 영역 전체에서 방출 |
| .volume | 전체 공간 내부 방출 |
renderMode 옵션
| 옵션 | 설명 |
|---|---|
| .unordered | 섞임 |
| .oldestFirst | 먼저 생긴게 위 |
| .oldestLast | 나중 생긴게 위 |
| .backToFront | 뒤 → 앞 순서 |
| .additive | 빛나는 느낌 (Glow 효과) |
예시 코드
let emitterLayer = CAEmitterLayer()
emitterLayer.emitterPosition = CGPoint(x: view.center.x, y: view.center.y)
emitterLayer.emitterSize = CGSize(width: 100, height: 100)
emitterLayer.emitterShape = .circle
emitterLayer.renderMode = .additive
emitterLayer.emitterCells = [emojiCell, bubbleCell]
view.layer.addSublayer(emitterLayer)
라이프 사이클 흐름
- CAEmitterCell 만들어서 셋팅
- CAEmitterLayer에 emitterCells로 연결
- emitterLayer를 View.layer에 add
- 알아서 입자 뿌려짐!
CAEmitterLayer vs CAEmitterCell 차이
| 구분 | CAEmitterLayer | CAEmitterCell |
|---|---|---|
| 역할 | 입자 방출기 | 입자 정의 |
| 중요 속성 | position, shape, size | contents, lifetime, velocity |
| 갯수 | 레이어는 1개라도 셀은 여러개 가능 | 여러 개 |
활용 예시
- 돈 터뜨리기 → emitterShape: .point
- 눈 내리기 → emitterShape: .line
- 거품 올라가기 → emitterShape: .rectangle
- 폭죽 → emitterShape: .circle
- 별 빛나는 효과 → renderMode: .additive
성능 주의사항 ⚠️
- birthRate 너무 크면 렉 걸림
- lifetime 길면 오래 남아서 메모리 차지
- scale 적절하게 설정
- 꼭 필요 없으면 birthRate = 0 으로 꺼주기
한줄 정리 🧠
CAEmitterLayer = "입자를 뿌리는 무대 + 위치/형태 결정"
반응형
'iOS > Swift' 카테고리의 다른 글
| Swift XCTest 정리 - 입문 (0) | 2025.04.15 |
|---|---|
| CAEmitterCell (0) | 2025.04.12 |
| OSLog 요소 (0) | 2025.04.11 |
| CoreBluetooth (0) | 2025.04.03 |
| Apple API Guidelines - Naming (0) | 2025.03.19 |