Problema na barra de status de chamada do UIViewController

Questão:

O controlador de exibição apresentado de forma modal não volta a subir depois que a barra de status de chamada desaparece, deixando 20px de espaço vazio / transparente na parte superior.

Normal: sem problemas

Na chamada: sem problemas

Após a chamada desaparecer:

Deixa um espaço vazio / transparente alto de 20px na parte superior, revelando a vista laranja abaixo. No entanto, a barra de status ainda está presente na área transparente. A Barra de Navegação também deixa espaço para a barra de status, com 'apenas 20 pixels a menos no posicionamento.

Baseado no iOS 10Controlador de visualização apresentado de forma modalApresentação Modal PersonalizadaO Controlador da Vista Principal atrás está laranjaNão usando o AutolayoutQuando girado paraPanorama, A barra de chamadas de 20 px deixa e ainda deixa um intervalo de 20 px.Desativei a exibição da barra de status nas orientações da paisagem. (ou seja, a maioria dos aplicativos de ações)

Tentei ouvir os delegados de aplicativos:

willChangeStatusBarFrame
didChangeStatusBarFrame

Veja também as Notificações baseadas em controlador:

UIApplicationWillChangeStatusBarFrame
UIApplicationDidChangeStatusBarFrame

Quando eu registro o quadro da exibição apresentada para todos os quatro métodos acima, o quadro está sempre na origem (y: 0).

Atualizar

Exibir apresentação modal personalizada do controlador

    let storyboard = UIStoryboard(name: "StoryBoard1", bundle: nil)
    self.modalVC = storyboard.instantiateViewController(withIdentifier: "My Modal View Controller") as? MyModalViewController
    self.modalVC!.transitioningDelegate = self
    self.modalVC.modalPresentationStyle = .custom
    self.modalVC.modalPresentationCapturesStatusBarAppearance = true;
    self.present(self.modalVC!, animated: true, completion: nil)


    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        let fromViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)
        let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)
        toViewController!.view.transform = CGAffineTransform(scaleX: 0.001, y: 0.001)

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.0, options: [.curveEaseOut], animations: { () -> Void in

            toViewController!.view.transform = CGAffineTransform.identity

        }, completion: { (completed) -> Void in

           transitionContext.completeTransition(completed)

        })
 }

questionAnswers(7)

yourAnswerToTheQuestion