이번에 구현할 기능은 스크롤 했을 시 상단에 고정되어 남아있는 Sticky Header입니다.
Sticky Header는 사용되지 않는 어플이 없을 만큼 자주 볼 수 있는데요.
iOS 14+ 에서 사용할 수 있는 LazyStack의 pinnedViews 옵션을 사용한다면 매우 손쉽게 구현할 수 있습니다.
이번 프로젝트에서는 HomeView.swift 에서 다음과 같이 사용하였습니다.
struct HomeView: View {
var body: some View {
ZStack {
// Background layer
Color.theme.background
.ignoresSafeArea()
// content layer
VStack(spacing: 0) {
homeHeader
ScrollView() {
VStack {
TotalBalanceView()
LazyVStack(pinnedViews: [.sectionHeaders]) { <- LazyVStack으로 감싸줍니다.
Section(header: VStack(spacing: 0) { <- Sticky Header가 될 부분
listOptionBar
sortOptionList
}.background(Color.theme.background)
) {
AllCoinListView(viewModel: viewModel) <- Sticky Header 밑에 사용될 코인 리스트
}
}
}
}
Spacer(minLength: 0)
}
}
}
}
Sticky Header 참고 블로그:
'Project > SwiftUI 블록와이드' 카테고리의 다른 글
[SwiftUI Project] 정렬 기능 만들기 (시총, 가격순, 변동률순) with Combine (2) | 2022.09.19 |
---|---|
[SwiftUI Project] Scroll To Top 버튼 만들기 (0) | 2022.09.18 |
[SwiftUI Project] 코인 검색하기 Filtering with Combine (0) | 2022.09.17 |
[SwiftUI Project] TextField FirstResponder 텍스트필드 포커싱 하기 (0) | 2022.09.16 |
[SwiftUI Project] 다른 View를 탭하거나 스크롤 하면 키보드 내리기 (0) | 2022.09.16 |
댓글