티스토리 뷰
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SWIFT
- 로컬라이징
- localizing
- 테이블뷰
- 프로그레스
- TabView
- swiftUI
- 스위프트
- TabBar
- permission
- AppStore
- Authorization
- 리젝
- 엑스코드
- SKProductsRequestDelegate
- Reject
- 아이오에스
- 심사
- Language
- SKPaymentTransactionObserver
- Localizations
- 다국어
- Localized
- ios
- 인디케이터
- custom segment
- SKPayment
- indicator
- Xcode
- presentationcompactadaptation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함