๋ถˆํˆฌ๋ช…ํ•œ ๋ทฐ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”๊ฑฐ์ง€? ๊ทธ๊ฒŒ ๋ฐ”๋กœ ์ด๊ฑฐ์˜€๋‹ค.

Materials

iOS๋Š” ๊นŠ์ด๊ฐ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ˜ํˆฌ๋ช… ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Blur Effect ํ˜น์€ Material์œผ๋กœ ๋ถ€๋ฅด๋Š” ์นœ๊ตฌ๋‹ค. HIG์—์„œ๋Š” ํ•ด๋‹น ํ™”๋ฉด์„ ์‚ฌ์šฉํ•˜๋ฉด, foreground์— ์˜ฌ๋ผ์™€์žˆ๋Š” content๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ background view์™€ control์— ๋Œ€ํ•œ hint๋ฅผ ์–ป๋Š” ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ƒฅ ์˜ˆ๋ป์„œ ์“ฐ๋Š”๊ฑฐ ์•„๋‹ˆ์—ˆ์–ด?

Material์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ Blur ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ, foreground์—์„œ ๋ณด์ด๋Š” ํ™”๋ฉด์„ ๋ณด์ด๊ธฐ ์œ„ํ•ด blur ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ , background color๋ฅผ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํˆฌ๋ช…ํ•˜๊ฒŒ ํ•œ๋‹ค.

์ข…๋ฅ˜๋Š” Thick, Regular, Thin, Ultrathin 4๊ฐ€์ง€๋ฅผ ๊ฐ€์ง„๋‹ค. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋’ท ๋ฐฐ๊ฒฝ์ด ๋ณด๋‹ค ๋งŽ์ด ๋ณด์ด๋Š” ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค.

How to Use Them

์šฐ๋ฆฌ์˜ ๋ชฉ์ ์ด ์ขŒ์ธก ํ™”๋ฉด์—์„œ ์šฐ์ธก ํ™”๋ฉด๊นŒ์ง€ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ด๋ณด์ž.

Blur Effect

๋จผ์ €, UIBlurEffect๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น style์— ์œ„์—์„œ ๋ณธ 4๊ฐ€์ง€ ์ข…๋ฅ˜์ค‘์˜ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค.

๋‹ค์Œ์œผ๋กœ๋Š” ์ด View์˜ size์™€ position์„ ์ •ํ•ด์ฃผ๋Š” UIVisualEffectView๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์—ฐํžˆ view ๊ณ„์ธต์— ๋„ฃ์–ด์ฃผ์–ด์•ผ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ์ฆ‰ view๋ฅผ ๋งŒ๋“ค๊ณ  UIBlurEffect๋ฅผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

let blurEffect = UIBlurEffect(style: .regular)
let blurView = UIVisualEffectView(effect: blurEffect)
self.view.addSubview(blurView)

Vibrancy Effect

๊ทธ ์œ„์— vibrant content๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์€ VisualEffectView ์œ„์—, ์ฆ‰ Subview๋กœ ์˜ฌ๋ ค์ ธ์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์˜๋„ํ•˜๊ณ  ๋งŒ๋“  ํด๋ž˜์Šค์ด๋‹ค. ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋ฉด, Content view ๋‚ด๋ถ€์— ๋ฐฐ์น˜๋œ ์ปจํ…์ธ ๊ฐ€ ๋”์šฑ ์ƒ์ƒํ•ด์ง„๋‹ค.

์ด Vibrancy effect๋Š” color์— ์˜์กด์ ์ด๋‹ค. Color๋Š” ๋ฌด์‹œ๋˜๊ณ  Alpha ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.

๋˜ํ•œ content view์— ์ถ”๊ฐ€ํ•œ subview๋“ค์€ tintColorDidChanged() ๋ฉ”์„œ๋“œ๋ฅผ ํ•ญ์ƒ override ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ์™ธ ์‚ฌํ•ญ์œผ๋กœ UIImage.RenderingMode.alwaysTemplate๊ฐ€ ์„ค์ •๋œ UIImageView ๋˜๋Š” UILabel์˜ ๊ฒฝ์šฐ tintColorDidChanged()๋ฅผ overrideํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ž๋™์ ์œผ๋กœ tintColor๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.

์ง€๊ธˆ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Blur View์•ˆ์— vibracy view๋ฅผ ๋„ฃ๋Š”๋ฐ, ๊ทธ vibrancy view๋„ blur ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œ๋กœ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. style์€ ์•Œ์•„์„œ ๊ฒฐ์ •ํ•˜๋ฉด ๋œ๋‹ค.

let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect, style: .fill)
let vibrancyView = UIVisualEffectView(effect: vibrancyEffect)
/** ๋˜๋Š”..
vibrancyView.effect = vibrancyEffect
**/
blurView.contentView.addSubview(vibrancyView)

์‚ฌ์‹ค ์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์–ด๋„ ๋ญ”์†Œ๋ฆฐ์ง€ ์ž˜ ๊ฐ์ด ์•ˆ์˜จ๋‹ค. apple ์„ค๋ช…์—์„œ ๋‚˜์˜จ imageView์™€ Label์„ ๋น„๊ตํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค.

vibrancy๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ๋’ค์— Blur๊ฐ€ ๋˜์–ด ์žˆ๋”๋ผ๋„ ์˜ฌ๋ ค์ง„ content์˜ ์ƒ‰์ƒ์ด ๊ทธ๋Œ€๋กœ ํ‘œํ˜„๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ vibrany view๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„์— label์„ ์˜ฌ๋ฆฐ ๊ฒฝ์šฐ (์ด๋ฒˆ์—๋Š” vibrancy view์— blur๋ฅผ ๋บ€๊ฑฐ๋ผ ์ด๋ ‡๊ฒŒ ํ‘œํ˜„๋œ ๊ฑฐ๋‹ค), ๋‚ด๋ถ€ content๊ฐ€ ๋ญ”๊ฐ€ blur ํ•˜๋ฉด์„œ๋„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š”..? ์ƒ๋™๊ฐ์žˆ๊ฒŒ ํ‘œํ˜„๋˜์—ˆ๋‹ค. ๋ญ”๊ฐ€ blur์— ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ์ƒ‰์ƒ?์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ๋„ˆ๋ฌด ์ข‹๋‹ค.

๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๊ทธ๋ฆผ์„ ๋ณด์ž. (์ถœ์ฒ˜: Zedd) 1๋ฒˆ์˜ ๊ฒฝ์šฐ ๊ธฐ์กด ํ•˜ํŠธ์˜ ์ƒ‰์ด ํŒŒ๋ž€์ƒ‰์ด์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , 2๋กœ ๊ฐ€๋ฉด์„œ ์ƒ‰์ด ๋ณ€ํ™”๋˜์—ˆ๋‹ค. ์ฆ‰ ์ƒ‰์ด blurView์— ์˜์กด์ ์œผ๋กœ ๋ณ€ํ™”ํ–ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ์€ ์œ„์— ์ ์—ˆ๋˜ ์˜ˆ์™ธ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค. UIImage์˜ rendering mode๋ฅผ templates๋กœ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, ์ƒ‰์ด ๋ณ€ํ™”ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ํ‘œํ˜„๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์‹œํ•œ๋ฒˆ ๋งํ•˜์ง€๋งŒ, UIImageview, UILabel์„ ์ œ์™ธํ•œ ๋…€์„๋“ค์€ vibrancy๊ฐ€ ์ž๋™ ์ ์šฉ๋˜์ง€ ์•Š์•„ tintColorDidChanged()๋ฅผ overrideํ•ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํ๋ฆ„์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด WWDC ์„ธ์…˜์—์„œ ๊ทธ๋ฆฐ ์ด ๊ทธ๋ฆผ์ด๋‹ค.

  1. UIBlurEffect๋ฅผ ๋งŒ๋“ค๊ณ  UIVisualEffectView์— ์ ์šฉํ•˜์—ฌ View๋ฅผ ๋งŒ๋“ ๋‹ค.
  2. 1์˜ View๋ฅผ VC.view์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. UIVibrancyEffect๋ฅผ ๋งŒ๋“ค๊ณ  UIVisualEffectView์— ์ ์šฉํ•˜์—ฌ View๋ฅผ ๋งŒ๋“ ๋‹ค.
  4. 3์˜ View๋ฅผ 1.contentView์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  5. 3์˜ view ์•„๋ž˜(subview)์— UILabel ๊ณผ ๊ฐ™์€ component๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

Apple์€ ์ด๋Ÿฌํ•œ Vibrant๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

Blur๊ด€๋ จํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์ž˜ ์•Œ์•„๋ณธ ๋“ฏ ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  Apple ์š”์†Œ์— ์ƒ๊ฐ๋ณด๋‹ค ์ด ์š”์†Œ๊ฐ€ ๋งŽ์ด ๋ฐ˜์˜๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ์ข‹์€ ๊ธฐํšŒ์˜€๋‹ค. ๋!

Reference