在转换委托上调用animateTransition
时,尚未在“查看控制器”上设置安全区域插入。
我尝试通过调用toViewController.view.setNeedsLayout()
和toViewController.view.layoutIfNeeded()
来强制布局,但没有成功。
任何人都可以提出一种方法,可以提前设置安全区域插入,也可以确定如何及时知道插件的过渡时间。
效果是我有一个UICollectionViewCell
,一旦转换完成就会向下移动。这是因为最初的框架具有0,0
来源,而不是在iPhone X上说0,44
,一旦设置了安全区域插入,它最终将完成。
答案 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];