Search

[SwiftUI] drawingGroup()

SwiftUI

drawingGroup()

๐Ÿ‘ฉ๐Ÿปโ€๐ŸŽจ
view๋ฅผ ๋ Œ๋”๋ง ํ•˜๊ธฐ ์ „์— view์˜ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ฉ์ž‘ํ•ด์ง€๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
โ€ข
drawingGroup() modifer๋Š” ์ตœ์ข… ํ‘œ์‹œ ์ „์— ๋ทฐ์˜ ๋‚ด์šฉ์„ offscreen ์ด๋ฏธ์ง€๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
โ—ฆ
offscreen ๊ตฌ์„ฑ์€ ์• ํ”Œ์˜ ๊ณ ์„ฑ๋Šฅ ๊ทธ๋ž˜ํ”ฝ ํ”„๋ ˆ์ž„์›Œํฌ์ธ Metal์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ View๋ฅผ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ์žˆ์–ด ์ธ์ƒ์ ์œผ๋กœ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
โ—ฆ
๋งŽ์€ ์ˆ˜์˜ gradient, shadow ๋ฐ ๊ธฐํƒ€ ํšจ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿด๋•Œ๋Š” drawingGroup()์„ ์ƒ๊ฐํ•˜์„ธ์š”.!
โ—ฆ
view์˜ ๋‚ด์šฉ์€ ๋‹จ์ผ ๋น„ํŠธ๋งต์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋น„ํŠธ๋งต์€ ๋ทฐ ๋Œ€์‹ ์— ํ‘œํ˜„ ๋ฉ๋‹ˆ๋‹ค.
Off-Screen Rendering
๋น„ํŠธ๋งต ๋ฐฉ์‹
Metal
VStack { ZStack { Text("DrawingGroup") .foregroundColor(.black) .padding(20) .background(Color.red) Text("DrawingGroup") .blur(radius: 2) } .font(.largeTitle) .compositingGroup() .opacity(1.0) } .background(Color.white) .drawingGroup()
Swift
๋ณต์‚ฌ
โ–ถ๏ธย drawingGroup()์€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ž์ฃผ ์‚ฌ์šฉํ•ด์„  ์•ˆ๋ฉ๋‹ˆ๋‹ค. offscreen render pass๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์†๋„๋ฅผ ๋А๋ ค์ง€๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„์— drawingGroup()๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.