在 iPhone X 上使用安全区域插入的 UIViewControllerAnimatedTransitioning

Posted

技术标签:

【中文标题】在 iPhone X 上使用安全区域插入的 UIViewControllerAnimatedTransitioning【英文标题】:UIViewControllerAnimatedTransitioning with Safe Area Insets on iPhone X 【发布时间】:2018-02-05 14:23:30 【问题描述】:

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

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

谁能建议一种方法,要么强制提前设置安全区域插图,要么确定我应该如何及时了解插图,以便过渡正常工作。

效果是我有一个UICollectionViewCell,一旦转换完成,它就会向下移动。这是由于框架最初具有 0,0 原点,而不是在 iPhone X 上显示 0,44,一旦设置了 Safe Area Insets,到那时过渡将完成。

【问题讨论】:

【参考方案1】:

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

【讨论】:

哇!不敢相信我错过了它 也帮助了我。谢谢! 嗨,您介意展示过渡的完整代码(或示例)吗?我有类似的问题,但没有用提供的解决方案解决它

以上是关于在 iPhone X 上使用安全区域插入的 UIViewControllerAnimatedTransitioning的主要内容,如果未能解决你的问题,请参考以下文章

NativeScript iPhone X 将内容放在安全区域

如何使用自动布局在 iphone x 中处理具有安全区域的键盘? [复制]

当子视图不在视图区域中时,安全区域在 iPhone X 上无法正常工作

iPhone X 将对象底部对齐到安全区域废墟在其他设备上的外观

使用 iPhone X 的安全区域指南计算 UIView 的高度

Ionic iPhone X 安全区域无法正常工作