Issue:
通话状态栏消失后,模态呈现的视图控制器不会向上移动,在顶部留下 20px 的空白/透明空间。
正常:没有问题
通话中:没有问题
通话中消失后:
在顶部留下 20 像素高的空白/透明空间,显示下面的橙色视图。但是状态栏仍然存在于透明区域上方。导航栏还为状态栏留出了空间,只是位置太低了 20 像素。
- 基于 iOS 10
- 模态呈现的视图控制器
- 自定义模态呈现
- 主视图控制器后面是橙色的
- 不使用自动布局
- 当旋转到景观, 20px In-Call Bar 离开并且仍然留下 20px 间隙。
- 我选择不以横向显示状态栏。 (即大多数库存应用程序)
我尝试听应用程序代表:
willChangeStatusBarFrame
didChangeStatusBarFrame
另请查看基于控制器的通知:
UIApplicationWillChangeStatusBarFrame
UIApplicationDidChangeStatusBarFrame
当我记录上述所有四种方法的呈现视图的框架时,框架始终位于 (y: 0) 原点。
Update
视图控制器自定义模态演示
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)
})
}