simple view
, combining view
, bag of views
의 3가지 종류가 있음view
들을 view builder
를 써서 한 군데에 담은 게 bag of views
고, combining view
는 이런 백에 담긴 view
들을 조합하는 역할을 담당View
와 같이 행동하기 위해서는 body
라는 변수가 필요한데 이 친구를 보면 some view
라고 되어있음..! 마치 좋은 간장을 만드려면 씨간장이 필요합니다...! 같다...ㅋㅋㅋㅋ struct ContentView: View {
var body: some View {
Text("Hello World!")
}
}
View
를 레고와 같이 생각하면 보다 쉽게 이해할 수 있다! 우리는 작은 레고 블록
여러 개를 합쳐서 레고 의자
를 만들고, 레고 의자 4개와 레고 식탁을 만들어 식당 세트
를 만들 수 있는데 이처럼 body
는 View
를 완성하기 위한 레고 블록과 같으므로 some View
가 되는 것!some View
냐면 놀랍지만 이건 사실 우리를 위한 배려다...ㅋㅋㅋㅋ body
는 하나의 view
이지만 연산의 결과로 하나의 view
가 정해지기 때문에 어떤 종류일 지 우리가 알기 어렵다!modifier
에 의한 ) modified view
일수도 있고 ZStack
과 같이 여러 개의 view 를 조합하는 view combiner
일 수도 있다. 정말 말 그대로 some kind of view 를 리턴 받을 수 있기 때문에 컴파일러에게 야 body는 View의 한 종류일건데 어떤 친구인지는 너가 연산해봐바 하고 알려주는 것!modifier
가 붙은 뷰는 이전과는 다른 새로운 modified view
가 되며, modifier
가 여러개인 경우 앞에서부터 순차적으로 적용되면서 매번 새로운 view
가 생겨나고 있다는 점을 유의하자!modifier
는 상속과 오버라이딩이 가능하다 ZStack
은 우리가 앞서 말했던 combining view
에 해당한다!
인자로 bag of views
를 만들어 주는 view builder
를 받아서 그 안에 들어있는 view
들을 조립하는데 얘는 Z축
을 기준으로 조합한다고 생각하면 된다!
view builder
가 리턴하는 bag of views
는 tuple Views
다 ZStack {
RoundedRectangle(cornerRadius:)
.stroke(lineWidth: 3)
Text("Hello World!")
.foregroundColor(.orange)
}
.padding(.horizontal)
.foregroundColor(.red)
View
가 뭔지 궁금했는데 찾아봐도 계속 아리송하게 느껴졌음...), 궁금하다고 생각치도 못했던 것(some view
)들 까지 짚어주셔서 아 그래서 그렇구나 하는 마음으로 들을 수 있었다...물론 1시간 20분은 한번에 듣기 내게는...버거워서 몇 번 끊어 들었음ㅋㅋㅋㅋ