๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

iOS/TIL

22.07.06 ใ…ฃ์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ & AppDelegate vs SceneDelegate & ๋‹คํฌ ๋ชจ๋“œ & UIWindow

 

 

 

 

์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

 

 

์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์—, ์ƒ๋ช…์ฃผ๊ธฐ์˜ ์ •ํ™•ํ•œ ์ •์˜๋ฅผ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ ์•ฑ์˜ ์ตœ์ดˆ ์‹คํ–‰๋ถ€ํ„ฐ ์™„์ „ํžˆ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์•ฑ์ด ๊ฐ€์ง€๋Š” ์ƒํƒœ์™€ ๊ทธ ์ƒํƒœ๋“ค ์‚ฌ์ด์˜ ์ „์ด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

 

์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์ด 4๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

1) Not Running: ์•ฑ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „ ์ƒํƒœ 
2) Foreground : ์•ฑ์ด ํ™”๋ฉด์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ƒํƒœ 
  - Active : ์•ฑ์ด ํ™”๋ฉด์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ 
  - Inactive: ์•ฑ์ด ํ™”๋ฉด์—์„œ ์‹คํ–‰ ์ค‘์ด๋‚˜ ์–ด๋–ค ์‹ ํ˜ธ๋„ ๋ฐ›์ง€ ์•Š๋Š” ์ƒํƒœ (ex. ๋ฏธ๋ฆฌ ์•Œ๋ฆผ์ด ๋– ์„œ ์•ฑ์ด ์‹ค์งˆ์ ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ)
3) Background: ์•ฑ์ด ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” ์ƒํƒœ (ex. Apple Music ํ™”๋ฉด์ด ๋ณด์ด์ง€ ์•Š์•„๋„ ์Œ์•…์ด ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ) 
4) Suspend: ์•ฑ์ด ๊ณง ์ข…๋ฃŒ๋  ์ƒํƒœ 

 

 

AppDelegate vs SceneDelegate

 

 

App Delegate ๋งŒ์„ ์‚ฌ์šฉํ•˜๋˜ ๊ณผ๊ฑฐ์™€ ๋‹ฌ๋ฆฌ, AppDelegate ์™€ SceneDelegate ๋กœ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋œ ์ค‘์š”ํ•œ ๊ณ„๊ธฐ๋Š” iOS 13 ์—์„œ iPadOS ์˜ ๋“ฑ์žฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค. iPadOS์˜ ๋“ฑ์žฅ์œผ๋กœ ๋ฉ€ํ‹ฐ์œˆ๋„์šฐ ๊ธฐ๋Šฅ์ด ๋‹ค์–‘ํ•ด์ง€๊ฒŒ ๋˜์—ˆ๊ณ , ์ด์— ๋”ฐ๋ผ UI ๋ผ์ดํ”„ ์‚ฌ์ดํด์ด ๋‹ค์–‘ํ•ด์ง€๋ฉด์„œ ์ด๋ฅผ ๊ด€๋ฆฌํ•ด์ค„ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. 

 

iOS 12 ์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ App Delegate

โ–ผ

 

iOS 13 ์ดํ›„ ๋ถ„ํ™”๋œ App Delegate ์™€ Scene Delegate

 

์ด๋ ‡๊ฒŒ iOS 13 ์ดํ›„์—๋Š” App Delegate ์—์„œ๋Š” ์•ฑ์ด ๋Ÿฐ์น˜๋˜๋Š”์ง€ ์ข…๋ฃŒ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์•ฑ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , Scene Delegate ์—์„œ๋Š” Background, Foreground ๋“ฑ์˜ UI ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

 

๋‹คํฌ ๋ชจ๋“œ 

iOS 13 ์ด์ƒ ๋ฒ„์ „์—์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋‹คํฌ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ๋‹คํฌ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•  ๊ฒฝ์šฐ, ๊ฐ’์ด ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ปฌ๋Ÿฌ, ์ด๋ฏธ์ง€, ์•„์ด์ฝ˜ ๋“ฑ์„ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

iOS ๋งŒ์˜ ๋…ํŠนํ•œ ์ปฌ๋Ÿฌ์ฒด๊ณ„์—๋Š” Semantic Colors ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ปฌ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋ชฉ์ ๊ณผ ์ ์šฉ๋˜๋Š” UI์— ๋”ฐ๋ผ ๋„ค์ด๋ฐํ•˜๊ณ  ์‹œ์Šคํ…œํ™”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, System Colors ์˜ ๋„์ž…์œผ๋กœ ์ปฌ๋Ÿฌ์— ์ข€ ๋” ์„ธ๋ถ€์ ์ธ ์˜๋ฏธ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

System Color ์˜ ๋„์ž…

๋‹คํฌ๋ชจ๋“œ์—์„œ System Colors ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Custom Colors๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์ƒ‰์ƒ์ด ๋ฐ˜์ „๋˜์ง€ ์•Š๊ณ , ์ง€์ •ํ•œ ์ƒ‰๊ณผ ๋™์ผํ•œ ์ƒ‰์ƒ์œผ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์™€ ๊ฐ™์ด ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹คํฌ๋ชจ๋“œ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ Asset Colors ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹คํฌ ๋ชจ๋“œ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Asset Colors
Asset Colors ์˜ Appearance

Asset Colors ์˜ Appearance๋ฅผ ์‚ดํŽด๋ณด๋ฉด Any, Dark ์™€ Any, Light, Dark ๋กœ ๋‚˜๋‰˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Any, Light, Dark๋Š” ๋‹คํฌ ๋ชจ๋“œ๊ฐ€ iOS 13 ์ด์ƒ ๋ฒ„์ „์—์„œ ๋“ฑ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— iOS 13 ๋ฏธ๋งŒ์˜ ๋ฒ„์ „ ๋˜ํ•œ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. 

 

๋‹คํฌ๋ชจ๋“œ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Appearance ๋ฅผ Light๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

์„ธ๋กœ ๋ชจ๋“œ ๊ณ ์ • (Build Settings)

 

ํ™”๋ฉด์ด ๋Œ์•„๊ฐ€์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ธ๋กœ ๋ชจ๋“œ๋ฅผ ๊ณ ์ •ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Build Settings ์— ๋“ค์–ด๊ฐ€์„œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

์ด๋ ‡๊ฒŒ ์กฐ์ •์„ ํ•ด์ฃผ๋ฉด ์„ธ๋กœ๋ชจ๋“œ๋กœ ํ™”๋ฉด์„ ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

UIWindow

UIWindow ๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด View ์— ์ด๋ฒคํŠธ๋“ค์„ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ๋•Œ๋ฌธ์—, iOS ์•ฑ์€ ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ UIWindow ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

UIWindow ์™€ View Controller ๋ฅผ ์‹œ๊ฐํ™”ํ•œ ๊ทธ๋ฆผ

 

UIWindow ๋Š” iOS 13 ์ดํ›„ Scene Delegate ๋กœ ๋„˜์–ด๊ฐ”๊ธฐ ๋•Œ๋ฌธ์—, iOS 13 ์ด์ „ ๋ฒ„์ „์— ๋Œ€์‘ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ๋•Œ๋ฌธ์— App Delegate ์—๋„ @available(iOS 13.0, *) ์„ ์ ์–ด์ฃผ์–ด์•ผ iOS 13 ์ด์ „ ๋ฒ„์ „์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.