본문 바로가기
iOS/설명

[iOS] UIScrollView contentInsetAdjustmentBehavior

by Sky Titan 2022. 8. 2.
728x90
 

How to ignore safe area insets in UIKit | Sarunw

Learn how to make UIScrollView, UITableView, and UICollectionView ignore safe area insets and put their content behind that navigation bar.

sarunw.com

 

Apple Developer Documentation

 

developer.apple.com

contentInsetAdjustmentBehavior

  • safe area inset을 이용해, 어떤 방식으로 ScrollView의 content 영역을 조정할지 정하는 UIScrollView의 프로퍼티
    • 즉, safe area가 있는 디바이스의 경우엔, ScrollView의 contents가 safe area 영역에 가리는 경우가 생기기에 이걸 방지하기 위해 system inset을 자동으로 조정할 수 있게 해주는 기능
  • default value는 automatic

xib에서 설정
코드에서 설정
always로 설정해서 상하에 inset이 적용됨
never로 설정하여 inset이 적용안됨

adjustedContentInset

  • ScrollView의 content inset과 safe area로부터 만들어진 scroll view의 inset
  • contentInsetAdjustmentBehavior에 의해 content inset이 조정된 결과이다.
    • 즉, contentInset + 'system inset(조정 값)' = adjustedContentInset
    • read only 타입이다.

 

1. automatic

  • 자동으로 scroll view inset을 조정한다.
  • 수직방향으로는 content가 항상 조정된다.
  • 수평방향 스크롤이 가능할 때도 safe area inset이 있다면 조정된다.

 

2. scrollableAxes

  • scroll 가능한 방향으로만 inset이 조정된다.
  • Top, Bottom inset은 수직 content size가 scroll view의 height보다 클 때, safe area inset을 포함한다.
    • alwaysBounceVertical 프로퍼티가 true일 때도 동일하게 조정된다.
  • Left, Right inset은 수평 content size가 scroll view의 width보다 클 때, safe area inset을 포함시킨다.

 

3. never

  • scroll view inset을 조정하지 않는다.

 

4. always

  • 항상 content inset에 safe are inset을 포함시킨다.

 

automatic vs always의 차이

  • automatic은 scrollable한 방향에 대해서만 inset을 적용한다.
  • always는 scrollable 여부와 상관없이 항상 inset을 적용한다.

 

예시

  • 수직으로만 스크롤 가능한 ScrollView를 rotation을 수평으로 바꾸었을 때
  • always의 경우엔 상하뿐 아니라, 좌우에도 inset을 준다.
  • automatic의 경우엔 좌우엔 inset을 주지 않는다.

always (상하좌우)
automatic (상하에만)

 

728x90

'iOS > 설명' 카테고리의 다른 글

[iOS] Keep Xcode version vs Use version on Disk  (0) 2022.08.20
[iOS] Xcode 저장공간  (0) 2022.08.17
[iOS] IPA 파일  (0) 2022.08.02
[iOS] Framework vs Library  (0) 2022.08.01
[iOS] IBOutlet Collections  (0) 2022.08.01

댓글