UIPresentationController在显示之后才调用containerViewWillLayoutSubviews

时间:2017-04-25 15:01:37

标签: ios uipresentationcontroller

我有UIPresentationController在主视图上显示侧边菜单,固定宽度为300.然后,从侧边菜单中,用户可以打开全屏模式视图。当模态视图被解除时,菜单视图在解雇动画期间填充屏幕(这是错误的)。在动画结束时调用containerViewWillLayoutSubviews并且菜单将其宽度更正为300。

我确实实施了frameOfPresentedViewInContainerView。我也在菜单视图中实现shouldPresentInFullscreen返回NO(虽然这似乎不会影响我能确定的任何内容)。

为什么在dismssal动画之前没有调用containerViewWillLayoutSubviews?在覆盖和显示菜单视图时,如何保持菜单视图的宽度?

1 个答案:

答案 0 :(得分:0)

感谢riadhluke指导我UIPresentationController changes size when another view controller is displayed on top of it

我的解决方案在我的菜单prepareForSegue

UIViewController *destination = [segue destinationViewController];
if (destination.modalPresentationStyle == UIModalPresentationFullScreen) {
    destination.modalPresentationStyle = UIModalPresentationOverFullScreen;
}

强制全屏模式演示超出全屏,导致菜单不会丢失,因此不会在解雇动画后重新布局。