UIViewControllerAnimatedTransitioning 与 iPhone X 上的安全区域插入

UIViewControllerAnimatedTransitioning with Safe Area Insets on iPhone X

当在过渡委托上调用 animateTransition 时,尚未在 'to view controller' 上设置安全区域插入。

我尝试通过调用 toViewController.view.setNeedsLayout()toViewController.view.layoutIfNeeded() 来强制布局,但没有成功。

任何人都可以建议一种方法来强制提前设置安全区域插图或确定我应该如何及时了解插图以使过渡正常工作。

效果是我有一个 UICollectionViewCell 在转换完成后似乎向下移动。这是因为框架最初有一个 0,0 原点,而不是在 iPhone X 上说 0,44,一旦设置了安全区域插入,它最终就会有,到那时过渡将有完成。

当您调用 layoutIfNeeded 时,请确保目标视图控制器确实位于视图层次结构中。我有同样的问题,奇怪的是只影响某些方向,并通过在下面添加第二行和第三行来修复它:

UIViewController * toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

// Added these two lines:
toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];
[transitionContext.containerView addSubview:toViewController.view];

[toViewController.view setNeedsLayout];
[toViewController.view layoutIfNeeded];