SwiftUI 스크롤 뷰 컴포넌트

2021년 8월 14일 수정

≡ 목차 (Table of Contents)

ScrollView

기본적으로 LazyVStack 을 같이 이용하는 형태가 있다.

ScrollView(.vertical, showsIndicators: false) {
    LazyVStack(alignment: .leading, spacing: 16) {
        View1()
        View2()
        ...
    }
}

이렇게 하면 내용물(content)의 크기에 맞게 vertical stack의 크기가 잡히기 때문에 스크롤이 깔끔하게 된다.

리스트(List) 대신 쓸 경우라면 ForEach 를 이용하면 쉽게 구현되는 편이다. 아래의 예는 items 라는 컬렉션의 내용을 각각 MyView 라는 뷰로 렌더링하는 예제다.

ScrollView(.vertical, showsIndicators: false) {
    LazyVStack(alignment: .leading, spacing: 16) {
        ForEach(items, id: \.self) {
            MyView($0)
        }
    }
}

당연하게도 리스트에 비해 퍼포먼스에 불리한 점이 있을 수 있으므로 내용이 많으면 List를 사용하자.