[iOS] Auto Layout - UIScrollView와 LayoutGuide 정리

2025. 6. 23. 20:59·📱 iOS
-->

 

🍏 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
[SnapKit] offset vs inset 정리  (0) 2025.06.17
'📱 iOS' 카테고리의 다른 글
  • [iOS] UILabel 주요 속성 정리
  • [iOS] Auto Layout 우선순위(Priority)
  • CodingKey로 JSON 키 매핑하기
  • Xcode에서 시뮬레이터 추가하는 방법
MoriOS
MoriOS
기억하기 위해 기록하는 공간 🖋️
  • MoriOS
    MoriOS
    MoriOS
  • 전체
    오늘
    어제
    • 분류 전체보기 (66)
      • 📌 Swift (15)
      • 📱 iOS (12)
      • 💡 Algorithm (1)
      • ❕Data structure (4)
      • ⚙️ Git (3)
      • 🖋️ TIL Journal (28)
      • 📝 Etc (3)
  • 블로그 메뉴

    • GitHub
  • 인기 글

  • 태그

    후행클로저
    makeconstraint
    제약조건 수정
    cow 값 타입
    스크롤 길이
    GitHub
    cow 참조 타입
    SnapKit
    프로그래머스
    git moji
    커밋 아이콘
    제약조건 변경
    Codable
    Split
    swift
    ios
    TiL
    prepareconstraints
    cow 쓰기 복사
    swift cow
    isscrollenabled
    Optional
    remakeconstraints
    updateconstraints
    커밋 이모지
    swift optional
    셀 높이
    uikit
    Components
    weak
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
MoriOS
[iOS] Auto Layout - UIScrollView와 LayoutGuide 정리
상단으로

티스토리툴바