0

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

我确实执行frameOfPresentedViewInContainerView。我还在shouldPresentInFullscreen菜单视图上实现返回 NO(尽管这似乎不会影响我真正能确定的任何事情)。

containerViewWillLayoutSubviews为什么在 disssal 动画之前不调用?当菜单视图被覆盖和显示时,我应该如何保持它的宽度?

4

1 回答 1

0

感谢 riadhluke 将我引导到UIPresentationController 更改大小时,另一个视图控制器显示在它上面

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

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

这会强制全屏模式呈现在全屏状态,这会导致菜单不会丢失,因此不会重新布置解雇后的动画。

于 2017-04-25T16:25:37.833 回答