์ด๋ฒ ํฌ์คํ
์์๋ CAEmitterLayer๋ฅผ ์ด์ฉํ์ฌ ํน์ ์ด๋ฒคํธ ์ฑ๊ณต ์ ์ด๋ฅผ ์ถํํ๋(?) ๋๋์ผ๋ก ์กฐ๊ธ ๋ ์ฌ๋ฐ๊ฒ ์ฌ์ฉ์ ๊ฒฝํ์ ๋์ด๊ณ ์ ํ๋ ์๋์ ๋ํด์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
ํ๋ก์ ํธ์์ ๊ธฐ์กด์๋ ์ฌ์ฉ์๊ฐ ์ฃผ๋ฌธ์ ์๋ฃํ๋ฉด ํ
ํฑ์ผ๋ก๋ง ์ฃผ๋ฌธ์ ์ฑ๊ณต, ์คํจ์ ๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฃผ๋ฌธ ์ฑ๊ณต ์ ํ
ํฑ์ผ๋ก๋ง ํผ๋๋ฐฑ์ ๋ฐ๊ธฐ์๋ ๋ญ๊ฐ ๋ฐ๋ฐํ๊ฒ ๋๊ปด์ ธ์ ์ฌ์ฉ์๊ฐ ์ฑ๊ณต์ ๋ํ ํผ๋๋ฐฑ์ ๋ณด๋ค ํ์คํ๊ฒ ๋ฐ์ผ๋ฉฐ ์๋น์ค๋ฅผ ์ฌ๋ฐ๊ฒ ์ฆ๊ธธ ์ ์๋๋ก ํ๊ณ ์ CAEmitterLayer๋ฅผ ํ์ฉํ๊ฒ ๋์์ต๋๋ค.
final class MyViewController: UIViewController {
private let emitterLayer = CAEmitterLayer()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.startEntranceAnimation()
}
private func startEntranceAnimation() {
self.emitterLayer.emitterPosition = CGPoint(x: Constant.Screen.screenWidth / 2, y: 130)
self.emitterLayer.birthRate = 1
self.emitterLayer.emitterCells = self.getEmojiEmitterCells()
self.view.layer.addSublayer(self.emitterLayer)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in
self?.emitterLayer.birthRate = 0
}
}
private func getEmojiEmitterCells() -> [CAEmitterCell] {
return [/* emojis */].map { emoji in
let cell = CAEmitterCell()
cell.contents = emoji.image.resized(to: CGSize(width: 40, height: 40)).cgImage
cell.lifetime = 3
cell.birthRate = 14
cell.scale = 0.3
cell.scaleRange = 0.15
cell.spin = 5
cell.spinRange = 10
cell.emissionRange = .pi * 2
cell.velocity = 600
cell.velocityRange = 50
cell.yAcceleration = 1200
return cell
}
}}
emitterPosition : Cell๋ค์ด ๋ฐฉ์ถ ๋ ์์นbirthRate : Layer์ ์ํ Cell๋ค์ birthRate์ ๊ณฑํด์ ธ ์ด๋น Cell์ ์์ฑ ๊ฐ์๋ฅผ ๊ฒฐ์ emitterCells : ๋ฐฉ์ถ๋ Cell๋คcontents : ๋ ์ด์ด์ ์ปจํ
์ธ . ์ด๋ฒ ํ๋ก์ ํธ์์๋ cgImage๋ก ๋ณํํ ์ด๋ชจ์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค.lifetime : Cell์ ์๋ช
(์ด)birthRate : Layer์ birthRate์ ๊ณฑํด์ ธ ํด๋น Cell์ ์ด๋น ์์ฑ๋๋ ๊ฐ์scale : Cell์ ์ค์ผ์ผscaleRange : Cell๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ ์ค์ผ์ผ์ ๋ฒ์spin : Cell์ ํ์ ์๋spineRange : Cell๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ ํ์ ์๋์ ๋ฒ์emissionRange : Cell์ด ๋ฐฉ์ถ๋๋ ๊ฐ๋velocity : Cell์ ์๋velocityRange : Cell๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ ์๋์ ๋ฒ์yAcceleration : Cell์ y์ถ ๊ฐ์๋
[Swift] ์นด์นด์คํก ์ก๊ธ ๋ดํฌ ์ ๋๋ฉ์ด์ ๋ฐ๋ผํ๊ธฐ