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

Aod*_*odh 7 uiviewcontroller uikit ios iphone-x

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

我试过通过调用强制布局:toViewController.view.setNeedsLayout()toViewController.view.layoutIfNeeded()没有成功.

任何人都可以提出一种方法,即强制安全区域插入被提前设置,或者确定我应该如何及时知道插入过渡到应该工作的时间.

结果是,UICollectionViewCell一旦转换完成,我就会向下移动.这是由于框架0,0最初具有原点,而不是0,44在iPhone X上说,一旦设置了安全区域插入,它最终会到达,此时转换将完成.

Man*_*son 10

调用时,请确保目标视图控制器实际位于视图层次结构中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];
Run Code Online (Sandbox Code Playgroud)

  • 嗨,您介意显示转换的完整代码(或示例代码)吗?我遇到了类似的问题,但没有使用提供的解决方案解决它 (2认同)