Home > Framework ๋น„๊ต

Apple ๊ทธ๋ž˜ํ”ฝ ํ”„๋ ˆ์ž„์›Œํฌ ๋น„๊ต

ํ•™์ƒ ๊ด€์ ์—์„œ ๊ฐ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์šฉ๋„, ๋‚œ์ด๋„, ์žฅ๋‹จ์ ์„ ํ•œ๋ˆˆ์— ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค

ํ•œ๋ˆˆ์— ๋ณด๋Š” ๋น„๊ตํ‘œ

ย  SwiftUI Animation CoreGraphics SpriteKit SceneKit Metal Core Image CAEmitterLayer UIKit Dynamics
์šฉ๋„ UI ๋ชจ์…˜/์ „ํ™˜ 2D ๋“œ๋กœ์ž‰ 2D ๊ฒŒ์ž„/๋ฌผ๋ฆฌ 3D ์‹œ๊ฐํ™” GPU ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํŒŒํ‹ฐํด ์ดํŽ™ํŠธ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ UI
์ฐจ์› 2D (3D ๋ณ€ํ™˜) 2D 2D 3D 2D/3D 2D 2D 2D
ํ•™์Šต ๋‚œ์ด๋„ โ˜…โ˜…โ˜†โ˜†โ˜† โ˜…โ˜…โ˜…โ˜†โ˜† โ˜…โ˜…โ˜…โ˜†โ˜† โ˜…โ˜…โ˜…โ˜…โ˜† โ˜…โ˜…โ˜…โ˜…โ˜… โ˜…โ˜…โ˜…โ˜†โ˜† โ˜…โ˜…โ˜†โ˜†โ˜† โ˜…โ˜…โ˜†โ˜†โ˜†
SwiftUI ํ†ตํ•ฉ ๋„ค์ดํ‹ฐ๋ธŒ Canvas SpriteView SceneView Representable ์ˆ˜๋™ ๋ณ€ํ™˜ Representable Representable
GPU ๊ฐ€์† ์ž๋™ ๋ถ€๋ถ„์  ์ž๋™ ์ž๋™ ์ง์ ‘ ์ œ์–ด ์ž๋™ ์ž๋™ CPU
์‹ค์‹œ๊ฐ„ ์ธํ„ฐ๋ž™์…˜ ๋†’์Œ ๋ณดํ†ต ๋†’์Œ ๋†’์Œ ๋†’์Œ ๋ณดํ†ต ๋ณดํ†ต ๋†’์Œ
์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ง€์› ์™„์ „ ์™„์ „ ์™„์ „ ๋ถ€๋ถ„์  ๋ฏธ์ง€์› ์™„์ „ ์™„์ „ ์™„์ „

ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ์ƒ์„ธ ๋น„๊ต

SwiftUI Animation

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ์•ฑ์˜ ์ผ๋ฐ˜์ ์ธ UI ์ „ํ™˜, ๋ฒ„ํŠผ/์นด๋“œ ์• ๋‹ˆ๋ฉ”์ด์…˜, ํ™”๋ฉด ๊ฐ„ ํŠธ๋žœ์ง€์…˜. ๋Œ€๋ถ€๋ถ„์˜ ์•ฑ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์‹œ๋„ํ•ด์•ผ ํ•  ์„ ํƒ์ง€.


CoreGraphics (Quartz 2D)

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ๋“œ๋กœ์ž‰ ์•ฑ, ์ฐจํŠธ/๊ทธ๋ž˜ํ”„ ๋ Œ๋”๋ง, ์ปค์Šคํ…€ UIView ๊ทธ๋ฆฌ๊ธฐ, PDF ์ƒ์„ฑ. PencilKit์ด ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•  ๋•Œ.


PencilKit

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ๋…ธํŠธ ์•ฑ, ์„œ๋ช… ์บก์ฒ˜, ์Šค์ผ€์น˜ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์•ฑ. Apple Pencil์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ.


SpriteKit

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: 2D ๊ฒŒ์ž„, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๊ต์œก ์ฝ˜ํ…์ธ . UIKit Dynamics๋ณด๋‹ค ๋” ํ’๋ถ€ํ•œ ๋ฌผ๋ฆฌ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ.


SceneKit

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: 3D ๋ชจ๋ธ ๋ทฐ์–ด, ์ œํ’ˆ ์‹œ๊ฐํ™”, ๊ฐ„๋‹จํ•œ 3D ๊ฒŒ์ž„, AR ํ”„๋กœํ† ํƒ€์ž…. Raw Metal ์—†์ด 3D๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์„ ๋•Œ.


Metal

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ๊ณ ์„ฑ๋Šฅ ๊ฒŒ์ž„ ์—”์ง„, ์ปค์Šคํ…€ ๋ Œ๋”๋Ÿฌ, GPU ์ปดํ“จํŠธ, ์ด๋ฏธ์ง€/๋น„๋””์˜ค ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ. ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์›ํ•˜๋Š” ์„ฑ๋Šฅ์ด๋‚˜ ๊ธฐ๋Šฅ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์„ ๋•Œ๋งŒ.


Core Image

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ์‚ฌ์ง„ ํŽธ์ง‘ ์•ฑ, ์นด๋ฉ”๋ผ ํ•„ํ„ฐ, ์ด๋ฏธ์ง€ ๋ณด์ •/ํ•ฉ์„ฑ. ๊ธฐ์กด ํ•„ํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ.


CAEmitterLayer

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ์ถ•ํ•˜ ์ดํŽ™ํŠธ, ๋‚ ์”จ ํšจ๊ณผ, UI ์žฅ์‹, ๋ฐฐ๊ฒฝ ์• ๋‹ˆ๋ฉ”์ด์…˜. ํŒŒํ‹ฐํด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š” ์—†๋Š” ์‹œ๊ฐ์  ํšจ๊ณผ.


UIKit Dynamics

Pros

Cons

์ด๋Ÿฐ ์ƒํ™ฉ์— ์„ ํƒํ•˜์„ธ์š”: ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ UI, ํƒ„์„ฑ ๋ฉ”๋‰ด, ์นด๋“œ ์ธํ„ฐํŽ˜์ด์Šค, ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ ์Šคํฌ๋กค. ๊ฒŒ์ž„์ด ์•„๋‹Œ ์•ฑ์—์„œ ๋ฌผ๋ฆฌ์  ๋А๋‚Œ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ.


์„ ํƒ ๊ฐ€์ด๋“œ ํ”Œ๋กœ์šฐ์ฐจํŠธ

"๊ทธ๋ž˜ํ”ฝ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค"
    โ”‚
    โ”œโ”€ UI ์ „ํ™˜/๋ชจ์…˜? โ†’ SwiftUI Animation
    โ”‚
    โ”œโ”€ ๋“œ๋กœ์ž‰/ํŽ˜์ธํŒ…?
    โ”‚   โ”œโ”€ Apple Pencil ํ•„์š”? โ†’ PencilKit
    โ”‚   โ””โ”€ ์ปค์Šคํ…€ ์ œ์–ด ํ•„์š”? โ†’ CoreGraphics
    โ”‚
    โ”œโ”€ 2D ๊ฒŒ์ž„/๋ฌผ๋ฆฌ?
    โ”‚   โ”œโ”€ ๊ฒŒ์ž„ ์ˆ˜์ค€? โ†’ SpriteKit
    โ”‚   โ””โ”€ UI์— ๋ฌผ๋ฆฌ๋งŒ? โ†’ UIKit Dynamics
    โ”‚
    โ”œโ”€ 3D?
    โ”‚   โ”œโ”€ ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…? โ†’ SceneKit
    โ”‚   โ””โ”€ ์ปค์Šคํ…€ ๋ Œ๋”๋ง? โ†’ Metal
    โ”‚
    โ”œโ”€ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ? โ†’ Core Image
    โ”‚
    โ””โ”€ ํŒŒํ‹ฐํด ์ดํŽ™ํŠธ? โ†’ CAEmitterLayer

SpriteKit vs UIKit Dynamics: ์–ธ์ œ ๋ญ˜ ์“ธ๊นŒ?

๋‘˜ ๋‹ค โ€œ๋ฌผ๋ฆฌโ€๋ฅผ ๋‹ค๋ฃจ์ง€๋งŒ ๋ชฉ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ย  SpriteKit UIKit Dynamics
๋Œ€์ƒ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ (SKNode) ์ผ๋ฐ˜ UI ์š”์†Œ (UIView)
์ขŒํ‘œ๊ณ„ ์ขŒํ•˜๋‹จ ์›์  ์ขŒ์ƒ๋‹จ ์›์ 
๋ฌผ๋ฆฌ ๊ธฐ๋Šฅ ํ’๋ถ€ (์กฐ์ธํŠธ, ํ•„๋“œ, ์ถฉ๋Œ ๋งˆ์Šคํฌ) ๊ธฐ๋ณธ์  (์ค‘๋ ฅ, ์ถฉ๋Œ, ์Šค๋ƒ…)
๋ Œ๋”๋ง ๋ณ„๋„ ๋ Œ๋” ๋ฃจํ”„ (SKScene) UIKit ๋ ˆ์ด์•„์›ƒ ์‹œ์Šคํ…œ
์ ํ•ฉํ•œ ๊ณณ ๊ฒŒ์ž„, ๊ต์œก ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋“œ๋ž˜๊ทธ&๋“œ๋กญ, ํƒ„์„ฑ UI, ์นด๋“œ
SwiftUI SpriteView (์‰ฌ์›€) UIViewRepresentable (์ˆ˜๋™)

ํŒ๋‹จ ๊ธฐ์ค€: โ€œ๋‚ด ๋ฌผ๋ฆฌ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ UIView(๋ฒ„ํŠผ, ์ด๋ฏธ์ง€ ๋“ฑ)์ธ๊ฐ€?โ€ -> UIKit Dynamics. โ€œ๋ณ„๋„ ๊ฒŒ์ž„ ํ™”๋ฉด์ธ๊ฐ€?โ€ -> SpriteKit.

SceneKit vs Metal: ์–ธ์ œ ๋ญ˜ ์“ธ๊นŒ?

ย  SceneKit Metal
์ง„์ž…์žฅ๋ฒฝ ๋‚ฎ์Œ (๋ช‡ ์ค„๋กœ 3D ์žฅ๋ฉด) ๋งค์šฐ ๋†’์Œ (GPU ํŒŒ์ดํ”„๋ผ์ธ ์ดํ•ด ํ•„์š”)
์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์…ฐ์ด๋” ๋ชจ๋””ํŒŒ์ด์–ด๋กœ ์ œํ•œ์  ๋ฌดํ•œ๋Œ€
๋ชจ๋ธ ๋กœ๋”ฉ USDZ, DAE ๋‚ด์žฅ ์ง€์› ์ง์ ‘ ํŒŒ์„œ ์ž‘์„ฑ ํ•„์š”
๋””๋ฒ„๊น… Xcode Scene Editor GPU Frame Debugger
์„ฑ๋Šฅ ์ƒํ•œ ์ค‘๊ฐ„ ์ตœ๋Œ€
์ ํ•ฉํ•œ ๊ณณ ์ œํ’ˆ ๋ทฐ์–ด, ๊ต์œก, AR ๊ฒŒ์ž„ ์—”์ง„, ๊ณผํ•™ ์‹œ๊ฐํ™”, ML

ํŒ๋‹จ ๊ธฐ์ค€: โ€œSceneKit์˜ ์…ฐ์ด๋” ๋ชจ๋””ํŒŒ์ด์–ด๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ๊ฐ€?โ€ -> SceneKit. โ€œ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง์ ‘ ์ œ์–ดํ•ด์•ผ ํ•˜๋Š”๊ฐ€?โ€ -> Metal.