[ios_Swift] SheetViewController (모달 화면 크기 커스텀)

이시영·2023년 10월 24일

SwiftUI에서 Sheet은 모달 또는 팝업 스타일의 뷰를 표시하기 위해 사용되는 컴포넌트이다. Sheet를 사용하면 사용자에게 다른 뷰 위에 새로운 뷰를 나타낼 수 있어 사용자 경험을 향상시키는 데 도움을 준다.

Sheet를 표시하는 데 사용되는 뷰 컨트롤러가 SheetViewController이며 SheetViewController는 하위 뷰 또는 컨텐츠 뷰와 함께 모달 또는 팝업 스타일의 화면을 나타낸다.

이를 이용하여 모달로 화면을 전환할 때 높이를 커스텀할 수 있는데 detents 를 이용하며 예시는 다음과 같다.


모달 창의 높이가 전체 화면의 중간

override func viewWillAppear(_ animated: Bool) {
        if let sheetPresentationController = sheetPresentationController {
            sheetPresentationController.detents = [.midium()]
        }
    }

화면의 높이를 임의로 커스텀

override func viewWillAppear(_ animated: Bool) {
        if let sheetPresentationController = sheetPresentationController {
            sheetPresentationController.detents = [
                .custom { _ in
                    360
                }
            ]
        }
    }

모달 화면의 높이와 추가로 resizable 크기도 커스텀

if let sheet = viewController.sheetPresentationController {
    sheet.detents = [
        .custom { _ in
            return 360
        },
        .custom { context in
            return context.maximumDetentValue * 0.6
        }
    ]
}

0개의 댓글