iOS 13에서 UIViewController를 모달로 표시 할 때 이상한 동작이 있습니다. iOS 13에서 모두 본 새로운 프레젠테이션 스타일은 다음과 같습니다.
제시된 뷰 컨트롤러는 제시된 뷰 컨트롤러 뒤에 나타납니다. 또한 “스택”을 모방하도록 아래로 이동합니다.
한편, 내 앱을 통해 뷰 컨트롤러를 제시 할 때이 효과가 계속 나타납니다.
새로운 뷰 컨트롤러를 제시 할 때 제시된 뷰 컨트롤러가 전혀 움직이지 않습니다
이 코드를 사용하여이 뷰 컨트롤러를 표시합니다.
let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)
내 질문은 다음과 같습니다.
왜 이런 일이 발생하는지 그리고 일반적인 iOS 13 스타일로 프리젠 테이션 컨트롤러를 표시하는 방법이 있는지 궁금합니다.
미리 감사드립니다!
답변
문제가 내보기 컨트롤러 계층 구조였습니다. 프리젠 테이션보기 컨트롤러를 내 앱의 루트보기 컨트롤러로 만들어서 고칠 수있었습니다. 먼저 백그라운드 컨트롤러를 루트 뷰 컨트롤러로 설정하여
window.rootViewController = self
그런 다음 이전 코드를 사용하십시오.
let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)
뷰 컨트롤러를 제시했습니다. 도와 주신 모든 분들께 감사드립니다!
답변
vc.modalPresentationStyle = .fullScreen
UINavigationController가 없으면를 사용하여 문제를 해결할 수 있다고 생각합니다 . 그렇지 않으면 다음과 같이 이러한 코드를 사용할 수 있습니다.
let navigationController = UINavigationController(rootViewController: vc)
navigationController.modalPresentationStyle = .fullScreen
present(vc, animated: true)
iOS 13에서는 Apple이 View Controllers의 기본 프리젠 테이션 스타일을 iOS 12의 전체 화면에서 모달 시트로 변경 한 새로운 기능이기 때문에
답변
프로그래밍 방식으로 :
let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen //or .overFullScreen for transparency
self.present(vc, animated: true, completion: nil)
스토리 보드에서 :
그게 다야. 루트 컨트롤러 나 창을 전혀 사용할 필요가 없습니다.
답변
인스펙터 툴바에서 변경할 수 있습니다. 달성하려면 : Tollbar Inspector Tollbar의 다섯 번째 섹션으로 이동 한 다음 Presentation 필드를 Full Screen으로 변경하십시오.
답변
이것은 설정해야 할 유일한 속성이어야합니다
presentedViewController.modalPresentationStyle = .automatic
https://developer.apple.com/videos/play/wwdc2019/224/에 자세히 설명되어
있습니다.