<h1><center> SwiftUI View Rendering (3) </center></h1> ###### title: ` ` ###### tags: `๐Ÿ’ป TIL` ###### date: `2023-12-18T10:39:33.284Z` > [color=#724cd1][name=๋ฐ๋ฆญ] > [SwiftUI View Lifecycle - Vadim Bulavin](https://www.vadimbulavin.com/swiftui-view-lifecycle/) > [Thinking in SwiftUI](https://www.objc.io/books/thinking-in-swiftui/) > [The SwiftUI render loop - Rens Breur](https://rensbr.eu/blog/swiftui-render-loop/) > [Exploring SwiftUI 3: View Hierarchies and State Updates - Benedict Quinn](https://blog.scottlogic.com/2020/01/28/Exploring-SwiftUI-3-View-Updates.html) > [Understanding View Rendering Cycle in SwiftUI - azamsharp(YouTube)](https://www.youtube.com/watch?v=imiKAwYTX6s) > [SwiftUIโ€™s relationship to UIKit and AppKit - WWDC by Sundell](https://wwdcbysundell.com/2019/swiftui-relationship-to-uikit-appkit/) > [Advanced Graphics and Animations for iOS Apps - WWDC NOTES by Federico Zanetello](https://www.wwdcnotes.com/notes/wwdc14/419/) > [๋ธ”๋กœ๊ทธ - Coden](https://velog.io/@ictechgy/SwiftUI%EC%9D%98-View-%EB%A0%8C%EB%8D%94%EB%A7%81%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A7%80%EB%8A%94%EA%B0%80) ## ๊ฐœ์š” ์˜ค๋Š˜๋„ SwiftUI View Rendering์— ๋Œ€ํ•ด ํ•™์Šตํ•ด๋ณด์ž. ์ด ๊ธ€์€ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์“ด ๊ธ€์„ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž‘์„ฑํ•œ๋‹ค. ## Thinking in SwiftUI View tree์™€ render tree๋Š” SwiftUI๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” Layout์„ ์–ป๊ธฐ ์œ„ํ•ด์„œ ์šฐ๋ฆฌ๋Š” view tree๊ฐ€ ์–ด๋–ค ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. SwiftUI์—์„œ State๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด, ๋ทฐ์˜ lifetime๊ณผ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  view tree๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ด€๊ณ„๋˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค. lifetime์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•  ๋•Œ ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด SwiftUI์ฝ”๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋งŒํผ ์ค‘์š”ํ•˜๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์ „ํ™˜์—๋Š” view tree์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. - view tree์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์–ด๋””์„œ๋“  ํ•„์š”ํ•จ. ```swift Text("Hello") .padding() .background(Color.blue) ``` view tree๋กœ ๋ณด๋ฉด .background ์•„๋ž˜์— padding, Color๊ฐ€ ์žˆ๊ณ , padding ์•„๋ž˜์— Text๊ฐ€ ์žˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์„ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉด, background modifier๋Š” view tree์˜ root์— ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜์œ„ ๋ทฐ๋กœ๋Š” padding๊ณผ Color๋ทฐ๋กœ ๋งจ ์œ„์— ๊ทธ๋ ค์ง€๊ฒŒ ๋œ๋‹ค. **NOTE** > background view์˜ modifier ์ž์ฒด์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์‹ฌ์ง€์–ด background modifier๊ฐ€ view tree์—์„œ ๊ฐ€์žฅ ์ƒ์œ„์˜ ๋ทฐ์ด์ง€๋งŒ, ์‹ค์ œ ๋ฐฐ๊ฒฝ์€(ํŒŒ๋ž€์ƒ‰) ์—ฌ์ „ํžˆ ํ…์ŠคํŠธ ๋’ค์— ๊ทธ๋ ค์ ธ ์žˆ๋‹ค.