1. 모달로 뷰컨트롤러 띄우는 법
2. 모달 스타일 설정
3. 모달 크기 변경
뷰컨트롤러로 화면을 이동하는 방법은 여러가지가 있겠지만
가장 많이 쓰이는 방법으로 크게 두가지를 꼽을 수 있다.
네비게이션 컨트롤러로 옆으로 넘겨주는 방법과
let vc = NavViewController()
self.navigationController?.pushViewController(vc, animated: true)
모달로 화면을 아래에서 위로 띄우는 방법.
let vc = ModalViewController()
vc.modalPresentationStyle = .automatic
present(vc, animated: true, completion: nil)
여기서 modalPresentationStyle 은 기본으로 .automatic으로 설정이 되어 있어 따로 선언을 해줄 필요는 없다.
상황에 따라 자동으로 모달 스타일을 지정해주는데 대부분의 경우 .pagesheet 스타일로 띄워지는 듯 하다.
하지만 fullscreen으로 모달을 띄우고 싶다면 스타일을 .fullscreen 혹은 .overCurrentContext 로 변경해주면 된다.
모달 크기를 조절하고 싶었는데, 방법을 찾다가 이것저것 해도 안돼서 그냥
기본 뷰를 투명으로 만들고 원하는 크기의 UIView() 를 따로 만들어서 모달처럼 보이게 했다.
그런데 모달 스타일을 기본으로 두면 뒤에 깔리는 화면이 뒤로 밀리면서 크기가 작아져서? 맘에 안들었는데
.fullscreen 이나 .overCurrentContext 로 스타일을 설정할 경우, 기본 모달의 자동 swipe down to dismiss 기능이 사라지더라.
.fullscreen 으로 모달을 만들고 아래로 스와이프해서 창을 닫으려면 따로 제스처 기능을 추가해줘야 되는 것 같더라.
extension weatherViewController: UIAdaptivePresentationControllerDelegate {
func presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController) {
self.dismiss(animated: true, completion: nil)
}
}
이렇게 extension으로 스와이프 delegate를 추가해줘도 된다고 하는데 나는 안되더라. 왜인지 모르겠다.
원한다면 제스처는 추후 넣어주도록 하고,
우선은 적당한 크기의 모달 뷰를 .fullscreen으로 만들어 띄우고 닫기 버튼을 추가해 dismiss를 하는 것으로 타협.
'Project > ToyProject_Couple App' 카테고리의 다른 글
[Swift iOS] 입력값을 받아와 tableView에 띄우기 - 데이터 내부 저장 방법 AppDelegate (1) | 2021.03.13 |
---|---|
[Swift iOS] Custom UITableView 만들기 (0) | 2021.03.12 |
[Swift iOS] UIImagePickerController로 사진첩에서 사진 가져오기 (0) | 2021.03.11 |
[Swift iOS] Open Weather Map API 사용해 날씨 데이터 불러오기 (0) | 2021.02.09 |
[Swift iOS] calculate date 날짜 계산하기 (0) | 2021.01.27 |