在 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 将对象底部对齐到安全区域废墟在其他设备上的外观