🍏 UIScrollView의 기본 구조
보통은 scrollView
→ contentView
또는 stackView
→ subviews
구조로 구성한다.
scrollView
└── contentView 또는 stackView
└── 여러 subview
stackView
하나로 전체 콘텐츠를 구성할 경우에는 contentView
없이 바로 사용하는 경우도 있다.
- 주의할 점
ScrollView
는 콘텐츠의 전체 높이(height) 또는 너비(width) 가 명확해야 스크롤이 작동한다.stackView
를 사용하지 않고,subview
가 2개 이상인 경우에는 가장 마지막subview
에bottom
제약을 꼭 걸어줘야 한다. 그렇지 않으면 스크롤이 제대로 작동하지 않거나, 일부 뷰가 화면 밖으로 잘릴 수 있다.
🍏 LayoutGuide란?
LayoutGuide
는 실제로 화면에 보이지 않지만, Auto Layout
에서 제약을 줄 기준점으로 사용할 수 있는 보이지 않는 가상 선이다.
iOS에서는 대표적으로 세 가지 주요 LayoutGuide
를 제공한다.
SafeAreaLayoutGuide
- 뷰의 안전 영역(Safe Area)을 기준으로 제약을 걸고 싶을 때 사용
- 노치, 홈 인디케이터 등으로 인해 가려지지 않는 안전한 공간
view.safeAreaLayoutGuide
FrameLayoutGuide (스크롤뷰 전용)
scrollView
의 눈에 보이는 영역(현재 화면에 표시되는 크기)- 실제로 화면에 렌더링되는 부분의 크기와 동일
- 스크롤뷰의 외곽 영역이라고 생각하면 된다.
scrollView.frameLayoutGuide
ContentLayoutGuide (스크롤뷰 전용)
scrollView
의 스크롤 가능한 영역의 시작과 끝 (top, bottom 또는 leading, trailing)- 내부 subView들의 총합. 전체 크기를 기준으로 스크롤 영역이 결정됨
- 스크롤뷰 안에 있는
contentView
또는stackView
에 제약을 줄 때 사용
scrollView.contentLayoutGuide
🍏 세로 스크롤 vs 가로 스크롤
scrollView의 스크롤 방향을 제한하려면 frameLayoutGuide
와 contentLayoutGuide
간의 너비 또는 높이를 동일하게 설정해줘야 한다.
세로 스크롤만 허용 (좌우 스크롤 차단)
콘텐츠의 width를 scrollView의 frame width에 맞춰주면 좌우 스크롤 없이 위아래로만 스크롤이 된다.
scrollView.contentLayoutGuide.snp.makeConstraints {
$0.width.equalTo(scrollView.frameLayoutGuide)
}
가로 스크롤만 허용 (상하 스크롤 차단)
콘텐츠의 height를 동일하게 설정하면 상하 스크롤 없이 좌우로만 스크롤된다.
scrollView.contentLayoutGuide.snp.makeConstraints {
$0.height.equalTo(scrollView.frameLayoutGuide)
}
'📱 iOS' 카테고리의 다른 글
[iOS] UILabel 주요 속성 정리 (0) | 2025.06.25 |
---|---|
[iOS] Auto Layout 우선순위(Priority) (2) | 2025.06.24 |
CodingKey로 JSON 키 매핑하기 (0) | 2025.06.19 |
Xcode에서 시뮬레이터 추가하는 방법 (0) | 2025.06.18 |
iOS에서 버튼 액션 연결 - addTarget vs addAction (0) | 2025.06.13 |