-
Notifications
You must be signed in to change notification settings - Fork 3
[대황] Demystify SwiftUI
SeungHyun Hong edited this page Jul 22, 2024
·
2 revisions
-
Identity - 뷰의 정체성
- 명시적 identity
- 포인터 identity: UIKit 에서는 클래스이기에 포인터가 곧 identity가 된다
- swiftUI는 데이터에 묶거나(identifiable), 명시적으로 지정해줄 수 있음
- 구조적 identity: 암시적 Identity
- 뷰 구조(타입)을 기반으로 자동으로 추론해낸다.
- 명시적 identity
-
AnyView 대신 ViewBuilder
- 브랜치마다 (if-else / switch) 다른 뷰를 반환하려면 ViewBuilder 사용
-
@State, @StateObject 는 뷰와 lifetime 이 같은 storage
-
ForEach 를 사용할 때 동적 데이터에 indicies를 쓰면 안되는 이유
- identity 가 위치인 index 로 결정되기에 오류 발생
-
inert 모디파이어
// 이런 형태보다는, if hasPadding { Text("Hello World!") .padding(10) } else { Text("Hello World!") } // 이런 형태가 낫다 Text("Hello World!") .padding(hasPadding ? 10 : 0) // inert modifier Sample opacity(1) padding(0) transformEnvironment(...) {}
- 그래서 개인적으로 디자인시스템의 뷰 설계 시, ViewModifier 형태로 변형시에 넣는 값에 Optional 을 넣는 걸 선호하는 편
고병학 | 권승용 | 김대황 | 김인환 | 유정주 | 윤동주 | 이준복 | 이창준 | 정종인 | 홍승현 |
---|---|---|---|---|---|---|---|---|---|
bengHak | ericKwon95 | qwerty3345 | loinsir | jeongju9216 | yoondj98 | junbok97 | SwiftyJunnos | chongin12 | WhiteHyun |