Skip to content

Latest commit

ย 

History

History
49 lines (41 loc) ยท 1.59 KB

File metadata and controls

49 lines (41 loc) ยท 1.59 KB

VStack

๊ณต์‹๋ฌธ์„œ : A view that arranges its subviews in a vertical line.

์ˆ˜์ง์œผ๋กœ ์Šคํƒ์ด ์Œ“์ด๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.

Declaration

@MainActor @frozen @preconcurrency
struct VStack<Content> where Content : View

๋ทฐ ํƒ€์ž…์ด๋ผ๋ฉด VStack์— ๋“ค์–ด๊ฐ€ ์ˆ˜์ง์ ์œผ๋กœ ๋ฐฐ์—ด์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

Overview

var body: some View {
    VStack(
        alignment: .leading,
        spacing: 10
    ) {
        ForEach(
            1...10,
            id: \.self
        ) {
            Text("Item \($0)")
        }
    }
}

ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ„๋‹ค๋ฉด Item1 ๋ถ€ํ„ฐ Item5๊นŒ์ง€ ์ˆ˜์ง์ ์œผ๋กœ ๋‚˜์—ด ๋œ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

LazyVStack๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด ํ•œ๋ฒˆ์— ๋ Œ๋”๋ง ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ๋กœ lazyํ•˜๊ฒŒ ์“ฐ๊ณ ์‹ถ์ง€ ์•Š๊ฑฐ๋‚˜, ์ ์€์–‘์˜ content๋ฅผ ๋‹ด์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

VStack์— ์กด์žฌํ•˜๋Š” 3๊ฐ€์ง€ ์ธ์ž

  • alignment: HorizontalAlignment
    • VStack์— ์Œ“์ผ ๋•Œ ์ˆ˜ํ‰์ ์œผ๋กœ๋Š” ์–ด๋–ค ์ •๋ ฌ ๊ธฐ์ค€์„ ๊ฐ–๊ณ  ์ •๋ ฌ๋˜๋Š”์ง€ ์ •์˜ํ•œ๋‹ค.
    • ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ๋Š” Center์ด๊ณ  ์›ํ•œ๋‹ค๋ฉด leading, trailing์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • spacing: CGFloat?
    • ๊ฐ ์„œ๋ธŒ๋ทฐ์˜ ๊ฐ„๊ฒฉ์„ ๊ฒฐ์ •ํ•œ๋‹ค.
    • ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ๋Š” nil
    • CGFloat๊ฐ’์„ ๋„ฃ์–ด์„œ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • @ViewBuilder content: () -> Content
    • ์‹ค์ œ ๋ทฐํƒ€์ž…์˜ contents๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
    • @ViewBuilder๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๊ธฐ์— ์—ฌ๋Ÿฌ contents๋“ค์„ ๋ธ”๋Ÿญ์œผ๋กœ ์Œ“๊ณ  ๋‹ด์•„์„œ ํ•˜๋‚˜์˜ ๋ทฐ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.