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

时间:2018-02-05 14:23:31

标签: ios uiviewcontroller uikit iphone-x

在转换委托上调用animateTransition时,尚未在“查看控制器”上设置安全区域插入。

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

任何人都可以提出一种方法,可以提前设置安全区域插入,也可以确定如何及时知道插件的过渡时间。

效果是我有一个UICollectionViewCell,一旦转换完成就会向下移动。这是因为最初的框架具有0,0来源,而不是在iPhone X上说0,44,一旦设置了安全区域插入,它最终将完成。

1 个答案:

答案 0 :(得分:9)

调用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];