티스토리 뷰
iOS Swift + UIKit
iOS Swift UISheetPresentationController.Detent (하프 모달 Half screen size custom modal drag bottom sheet present)
GonsLab 2022. 9. 1. 00:00반응형
안녕하세요 Gons 입니다.
반만 나오는 하프 모달 바텀 시트입니다.
드래그해서 크기를 변경할 수도 있습니다.
iOS 15 부터 지원합니다.
전체 코드
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let btn = UIButton(type: .system)
view.addSubview(btn)
btn.frame = .init(x: 100, y: 100, width: 100, height: 100)
btn.setTitle("presentModal", for: .normal)
btn.addTarget(self, action: #selector(presentModalBtnTap), for: .touchUpInside)
}
@objc private func presentModalBtnTap() {
let vc = UIViewController()
vc.view.backgroundColor = .systemYellow
vc.modalPresentationStyle = .pageSheet
if let sheet = vc.sheetPresentationController {
//지원할 크기 지정
sheet.detents = [.medium(), .large()]
//크기 변하는거 감지
sheet.delegate = self
//시트 상단에 그래버 표시 (기본 값은 false)
sheet.prefersGrabberVisible = true
//처음 크기 지정 (기본 값은 가장 작은 크기)
//sheet.selectedDetentIdentifier = .large
//뒤 배경 흐리게 제거 (기본 값은 모든 크기에서 배경 흐리게 됨)
//sheet.largestUndimmedDetentIdentifier = .medium
}
present(vc, animated: true, completion: nil)
}
}
extension ViewController: UISheetPresentationControllerDelegate {
func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheetPresentationController: UISheetPresentationController) {
//크기 변경 됐을 경우
print(sheetPresentationController.selectedDetentIdentifier == .large ? "large" : "medium")
}
}
iOS
Swift
Xcode
UIKit
SwiftUI
modalPresentationStyle
sheetPresentationController
detents
커스텀 프레젠트
반응형
'iOS Swift + UIKit' 카테고리의 다른 글
원티드 프리온보딩 iOS 챌린지 1차 (Wanted Free Onboarding iOS Challenge) (0) | 2022.11.16 |
---|---|
iOS Swift URLSession (Alamofire 없이 http 통신) (0) | 2022.10.01 |
iOS Swift Email Masking (이메일 마스킹 * 표시 ID 아이디 가리기) (0) | 2022.06.01 |
iOS Swift 웹뷰 html 바디 가져오기 (get webview html body tag) (0) | 2022.05.04 |
iOS Swift 날짜 차이 구하기 (요일, 시간 사이 간격 변환 계산) Calc Date (0) | 2022.03.02 |
댓글