iOS 개발/SwiftUI (5) 썸네일형 리스트형 [iOS/SwiftUI] Alignment Guides, Custom Alignment Alignment guides 부모 View 의 정렬 규칙이 아닌 자식 View 각각의 정렬 규칙을 따르고 싶을 때 사용한다. Stack 에 속한 View 들은 각각의 Alignment guide 를 갖는다. Stack 의 종류에 따라 수평, 수직의 중간 지점에 대한 정보가 계산되는데, 각 View 들은 자신이 속한 Stack의 중간 지점에 자신의 Alignment guide 를 맞춘다. 즉, 기본적으로 Center alignment 가 적용된다. 그런데 Stack 에 속한 일부 View 에 대해 다른 정렬 기준을 적용하고 싶다면 alignmentGuide modifier 를 사용하면 된다. HStack { Text("🌧") .alignmentGuide(VerticalAlignment.center) { .. [iOS/SwiftUI] Lazy Stacks Lazy Stacks Stack View의 일종으로 아이템들이 화면에 렌더링 되는 순간에 생성된다. 미리 생성해 놓지 않아 메모리를 낭비하지 않는다. ScrollView { LazyVStack(alignment: .leading) { ForEach(1...100, id: \.self) { Text("Row \($0)") } } } List Swipe to delete, Reordering, Built-in style (Horizontal divider, Navigation mark) 등의 기능을 가진 Lazy Stack 의 일종이다. 즉, List 를 사용하는 경우 기본적으로 View 가 렌더링 되는 순간 생성되는 것이다. [iOS/SwiftUI] 기초적인 Navigation 구현하기 NavigationView 사용하기 var body: some View { NavigationView { List(artworks) { artwork in // Add views to the navigation stack with NavigationLink. NavigationLink( destination: DetailView(artwork: artwork), label: { Text(artwork.title) }) } .listStyle(PlainListStyle()) // Notice that this modifier is for List. (Not NavigationView.) .navigationBarTitle("Artworks") } } Bool 변수를 toggle 해서 sheet 띄우기 Bo.. [iOS/SwiftUI] ForEach 로 View 반복하기 (Identifiable protocol) Static View vs. Dynamic View Static View 는 SwiftUI 의 View 컴포넌트들을 하드 코드 해서 만드는 View 를 말한다. VStack 안에 TextField, Button 등을 작성한 View 를 예로 들 수 있다. Dynamic View 는 List 혹은 ForEach 를 통해 다수의 View 를 만드는 방식이다. View 를 추가, 제거 시에 몇 번째 View 에 생긴 변화인지 파악해야 하므로 각각을 구별할 수 있는 식별자(identifier) 가 필요하다. 식별자란 유일하게 혼자만 가지는 정보로, 하나의 식별자에 대해 하나의 대상만 존재하기 때문에 이를 통해 어떤 Item(View) 인지 파악할 수 있다. Identifiable protocol Identifi.. [iOS/SwiftUI] State & Binding @State View 는 앱의 상태를 나타내고 Data 는 그 상태의 정보를 가진다. Data 가 바뀌면 View 는 그 변경 사항을 반영해야 하는데, View 는 값 타입 (Value type) 이므로 변경 사항을 반영하지 않는다. (modifier 를 사용할 때도 변경 사항의 반영된 새로운 View 를 반환 받는 것이다.) 따라서, View 의 상태를 변경 가능한 타입으로 메모리에 두고 Data 가 변경될 때마다 View 를 갱신 (Re-render) 하도록 해야한다. @State 를 프로퍼티 앞에 사용하면 해당 프로퍼티의 변경에 대해서 View 는 Re-render 될 수 있다. Binding Data 의 Binding 을 받아서 동작하는 컴포넌트들이 있다. Binding 을 받는 것은 실제 Dat.. 이전 1 다음