모름차순 콘트롤러에서 표시 한 자체 사용자 지정 컨테이너보기 컨트롤러 (루트보기 컨트롤러 자체가 아니기 때문에) 입니다. 루트보기 컨트롤러는 호출 상태 표시 줄이 표시 될 때 레이아웃이 올바르게 처리됩니다. 이제 모달로 사용자 지정 컨테이너에 자식 (예 : SomeViewController
의 인스턴스를 허용)을 표시하면 자식이 예상대로 레이아웃됩니다. 맞춤 컨테이너가 이미 표시되어있는 상태에서 통화 상태 표시 줄이 표시되면 자녀가 올바르게 조정됩니다.사용자 지정 컨테이너가 호출 상태 표시 줄에 맞게 레이아웃을 올바르게 조정하지 못합니다.
맞춤 컨테이너가 아직 표시되지 않은 상태에서 통화 상태 표시 줄이 표시되면 문제가 발생합니다. 통화 상태 표시 줄이있는 상태에서 사용자 정의 컨테이너를 표시하면 하위보기의 하단이 확장 상태 표시 줄 (즉, 20 포인트)의 크기만큼 잘립니다. 프레임의 크기가 올바른지 또는 오프셋이 설정되어 있는지 확인하십시오. 통화 상태 표시 줄을 닫으면 상단이 새로 확보 된 공간으로 조정되지만 하단은 잘립니다. 비슷한에 대한 몇 가지 SO 질문이 있지만
let container = ContainerController()
trainingContainer.selectedViewController = SomeViewController()
self.present(trainingContainer, animated: true, completion: nil)
:
다음 쇼 컨테이너보기 관련 코드 :
class ContainerController: UIViewController {
var selectedViewController: UIViewController?
override func viewDidLoad() {
super.viewDidLoad()
if let selectedViewController = selectedViewController {
initialTransition(to: selectedViewController)
}
}
fileprivate func initialTransition(to viewController: UIViewController) {
guard self.isViewLoaded else {
return
}
self.addChildViewController(viewController)
viewController.view.frame = self.view.frame
self.view.addSubview(viewController.view)
viewController.didMove(toParentViewController: self)
}
// rest of the code omitted
}
컨테이너보기는 루트 뷰 컨트롤러에서이 코드를 사용하여 제시 (SO question, another SO question 등) 대부분은 작동하지 않는 솔루션 (예 : wantsFullScreenLayout 및 그 후속 제품)을 제안하거나 조금 지나치게 보였습니다 (상태 표시 줄을 관찰하면 adap t 레이아웃), 특히 자식보기 컨트롤러가 직접 제시되었을 때 제대로 작동하고 있다는 점을 감안할 때.