[ios] 새로운 iOS 13 모달 프레젠테이션 : 프리젠 테이션 컨트롤러가 아래로 이동하지 않음

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 = .fullScreenUINavigationController가 없으면를 사용하여 문제를 해결할 수 있다고 생각합니다 . 그렇지 않으면 다음과 같이 이러한 코드를 사용할 수 있습니다.

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/에 자세히 설명되어
있습니다.


답변