WWDC 2019 ํ‚ค๋…ธํŠธ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉฐ ์•Œ์งœ ์ •๋ณด๋ฅผ ์™์™ ๋ฝ‘์•„๋ณด์ž.

Dark Mode

iOS 13๋ถ€ํ„ฐ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ dark mode์ด๋‹ค.

ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉด์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ์€ ์—ญ์‹œ Mode์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š” ์ƒ‰์ƒ์ด์—ˆ๋‹ค. ๊ฐ™์€ ํ™”๋ฉด์ด๋ผ๋„ ๋ชจ๋“œ์— ๋”ฐ๋ผ ๊ฐ€์‹œ์„ฑ์„ ์œ„ํ•ด ์ƒ‰์ด ๋ณ€ํ™”ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ธฐ์กด์—๋Š” RGB๊ฐ’์œผ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ ๋˜์–ด ์žˆ๋˜ ๊ฒƒ์„, Semantic Color๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ๋‹ค.

semantic color๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์˜๋ฏธ๋ก ์ ์ธ ์ƒ‰์ƒ์ด๋‹ค. label์ด๋ผ๋Š” ์ƒ‰์ƒ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ด ์ƒ‰์ƒ์€ mode์— ๋”ฐ๋ผ ํ‘œํ˜„ํ•ด์•ผ ํ•˜๋Š” ์ƒ‰์ƒ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ prefix๋กœ system์ด๋ผ๊ณ  ๋ถ™์€ ๊ฒฝ์šฐ๊ฐ€ apple์—์„œ ๋งŒ๋“ค์–ด๋‘” semantic color์ด๋‹ค. mode์— ๋”ฐ๋ผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด๋‘” ์ƒ‰์ƒ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

Apple์€ ์ด๋Ÿฌํ•œ semantic color๋ฅผ ์—ฌ๋Ÿฟ ๊ตฌ๋น„ํ•ด๋‘์—ˆ๋‹ค. label์˜ ๊ฒฝ์šฐ ์ค‘์š”๋„์— ๋”ฐ๋ผ ์ด 4๊ฐ€์ง€ ์ƒ‰์ƒ์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. system background์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Dark Mode๋ฅผ ํ™•์ธํ•˜์ž.

์ด๋Ÿฌํ•œ darkmode ๋Œ€์‘์€ Tab Bar, Button ๋“ฑ ๋‹ค์–‘ํ•œ UIKiut ์š”์†Œ์— ์ด๋ฏธ ๋ฐ˜์˜๋˜์–ด ์žˆ๋‹ค. Customizingํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ญ์‹œ ์ด์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ• ์—ญ์‹œ ์—ด์–ด๋‘์—ˆ๋‹ค.

Dynamic Colors

์œ„์—์„œ ์–˜๊ธฐํ•œ semantic color๋Š” ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ ๋‹จ์–ด์— ๋‘๊ฐ€์ง€ ์ƒ‰์ƒ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์˜ ์ƒ‰์ƒ์ด๋ผ๋Š” ์˜๋ฏธ๋ก ์  ์ด๋ฆ„์— ๋‘๊ฐœ์˜ ์ƒ‰์„ ๋‹ด๋Š” ๊ฒƒ์„ apple์—์„œ๋Š” Dynamic Colors๋ผ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

Elevated Level

๊ฐ™์€ semantic color๋ฅผ ๊ฐ€์ง์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์‹ค์ œ๋กœ ๋ณด์•˜์„ ๋•Œ ๋‹ค๋ฅธ ์ƒ‰์ƒ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด modal์ด ์˜ฌ๋ผ์˜จ ๊ฒฝ์šฐ, ์˜ฌ๋ผ์˜จ modal์˜ ๋ฐฐ๊ฒฝ๊ณผ ๋’ค VC์˜ ๋ฐฐ๊ฒฝ์ƒ‰์ด ๊ฐ™๋”๋ผ๋„ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์ด ๊ทธ ์˜ˆ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ํ™”๋ฉด์ด ๋ณด์ผ ๋•Œ, ํ•˜์œ„ VC๋ฅผ base level์ด๋ผ ๋ถ€๋ฅด๊ณ , ์˜ฌ๋ผ์˜จ VC๋ฅผ elevated level์ด๋ผ ๋ถ€๋ฅธ๋‹ค. ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” base์ด๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ device๋ฅผ ์•Œ๊ณ  ์ƒ‰์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์„๊นŒ? ํ•ด๋‹น ์˜๋ฌธ ์‚ฌํ•ญ์€ ์ดํ›„ ๊ธ€์ธ UITraitCollection์—์„œ ์•Œ์•„๋ณด์ž.

In Xcode

Storyboard์—์„œ๋Š” ๋ฐ”๋กœ ์ƒ‰์ƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹คํ–‰ ์ค‘์—๋„ ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ๋ฐ”๋กœ๋ฐ”๋กœ dark mode๋ฅผ ๋ณ€ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

image์™€ asset์— ๋Œ€ํ•ด appearance์— Any, Dark๋ฅผ ์„ ํƒํ•˜๋ฉด, dark mode์ผ ๋•Œ option์ด ์ƒˆ๋กœ ๋œฌ๋‹ค. ์—ฌ๊ธฐ์— ์›ํ•˜๋Š” asset์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด dynamic color๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์—ฌ๊ธฐ์„œ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ๋Š”๋ฐ, ์™œ Any, light, dark๋Š” ์™œ ์žˆ๋Š๋ƒ ํ•˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๋‹ค. Providing Images for Different Appearances ํ•ด๋‹น ๊ธ€์„ ๋ณด๋‹ˆ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Light and dark appearances. Provide images for both light and dark appearances. Use the Any Appearance slots to support older versions of macOS or iOS.

์ฆ‰, older version ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด๋‘” ๊ฒƒ์ด Any์ด๋‹ค. ๋งŒ์•ฝ, older version์—๋Š” Any appearance๋กœ ๋งž์ถ”๊ณ , iOS 13์ด์ƒ ๋ฒ„์ „ ๊ธฐ๊ธฐ์— ๋Œ€ํ•ด์„œ๋Š” light, dark๋ฅผ ๋”ฐ๋กœ ์ ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ด๋‹น ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ง€๊ธˆ์€, older version์˜ ํ™”๋ฉด๊ณผ iOS 13๋ฒ„์ „ ์ด์ƒ light mode์˜ ํ™”๋ฉด์„ ๋˜‘๊ฐ™์ด ๋งž์ถœ ์˜๋„์ด๋ฏ€๋กœ Any, dark ์˜ต์…˜์„ ์„ ํƒํ•œ๋‹ค.

iOS 13์ดํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

Status Bar

UIActivityIndicatorView

Drawing Attributed Text

Reference