UISheetPresentationController
- iOS 15부터 도입된 하단에서 올라오는 시트 형태의 모달 화면을 제어하는 컨트롤러
- 기존의
modalPresentationStyle = .pageSheet, .formSheet 방식보다 훨씬 유연하고 강력한 제어를 제공
- 높이 단계 지정 가능:
.detents 속성으로 medium / large 등 시트의 높이 설정 가능
- 드래그로 사이즈 조절: 사용자가 위아래로 드래그해서 시트 높이 조절 가능
- 그랩 핸들 표시: 상단의 회색 막대(
grabber) 표시 가능
- 배경 흐려짐: 기본적으로 배경은 흐릿하게 처리됨 (커스터마이징 가능)
주요 속성
| 속성 | 설명 |
|---|
detents | 시트 높이 지정. .medium(), .large() 또는 .custom(...) |
selectedDetentIdentifier | 현재 선택된 시트 높이 (.medium, .large) |
prefersGrabberVisible | 상단에 회색 막대 표시 여부 |
prefersEdgeAttachedInCompactHeight | compact 환경에서 상단에 붙일지 여부 (iPhone에서는 주로 false) |
preferredCornerRadius | 시트의 모서리 둥글기 |
largestUndimmedDetentIdentifier | 특정 시트 크기까지는 배경을 흐리지 않음 |
예제
let sheetVC = MyBottomSheetViewController()
if let sheet = sheetVC.sheetPresentationController {
sheet.detents = [.medium(), .large()]
sheet.prefersGrabberVisible = true
sheet.prefersScrollingExpandsWhenScrolledToEdge = false
sheet.preferredCornerRadius = 20
}
sheetVC.modalPresentationStyle = .pageSheet
present(sheetVC, animated: true)