티스토리 뷰
ZStack 은 자신의 children를 z축으로 overlay하는 View이고
overlay 는 현재 뷰에 secondary view를 overlay하는 modifier 입니다.
(overlay를 중첩으로 번역할 수 있을 것 같습니다)
애플문서에 있는 overlay 예제의 결과를
zstack으로도 똑같이 나타낼 수 있습니다.
이렇게 보면 똑같아보이지만
사실 두 개는 차이점이 있습니다.
ZStack의 자식뷰들은 서로에 대해 independent 합니다.
그리고 ZStack에 frame을 따로 주지 않은 이상 가장 큰 자식뷰를 기준으로 ZStack의 fit이 결정됩니다.
반면 overlay의 경우
overlay되는 view는 parent view에 종속됩니다.
항상 overlaid view는 parent view의 위에 위치하고
parent view의 좌표 공간(coordinate space)에 있습니다
예제로 살펴보겠습니다.
[1] zIndex
폴더 이미지를 하트보다 더 위로 위치시키고 싶어서
image의 zIndex를 2로 주었습니다.
(zindex 는 기본 값이 0이고 클 수록 더 front에 위치됩니다)
ZStack의 경우 예상대로 동작하지만
overlay의 경우 항상 overlaid view가 parent view위에 있는 것을 볼 수 있습니다.
[2] fit
하트의 크기를 키워보겠습니다.
overlay는 parent view를 기준으로 fit이 잡히지만
ZStack은 가장 큰 뷰를 기준으로 fit이 잡히는 것을 볼 수 있습니다.
clipped() 해보면 이렇게 됩니다.
alignment를 leading으로 바꿔보면
더 차이를 명확히 알 수 있습니다.
[ Reference ]
stackoverflow.com/questions/63446213/difference-between-a-zstack-or-using-overlay
'🍏 > SwiftUI + Combine' 카테고리의 다른 글
[SwiftUI] @StateObject (0) | 2021.08.31 |
---|---|
[SwiftUI] @ViewBuilder 와 AnyView (1) | 2021.08.19 |
[SwiftUI] Custom Modifier 만들기 (0) | 2021.03.09 |
[SwiftUI] Button의 Tappable 영역 (1) | 2020.09.06 |
[SwiftUI] modifier의 순서를 고려하자 (특히 frame) (0) | 2020.09.06 |
- Total
- Today
- Yesterday
- Django Heroku Scheduler
- Watch App for iOS App vs Watch App
- Flutter 로딩
- cocoapod
- SerializerMethodField
- ipad multitasking
- 구글 Geocoding API
- flutter 앱 출시
- ribs
- 장고 Custom Management Command
- 플러터 싱글톤
- Flutter Text Gradient
- DRF APIException
- flutter dynamic link
- 장고 URL querystring
- Dart Factory
- 플러터 얼럿
- drf custom error
- flutter deep link
- github actions
- Flutter Spacer
- Sketch 누끼
- Flutter getter setter
- Django Firebase Cloud Messaging
- PencilKit
- Python Type Hint
- Django FCM
- Flutter Clipboard
- METAL
- flutter build mode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |