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

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

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

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

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

【问题讨论】:

    标签: ios uiviewcontroller uikit iphone-x


    【解决方案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];
    

    【讨论】:

    • 哇!不敢相信我错过了它
    • 也帮助了我。谢谢!
    • 嗨,您介意展示过渡的完整代码(或示例)吗?我有类似的问题,但没有用提供的解决方案解决它
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2018-04-28
    • 2018-05-25
    相关资源
    最近更新 更多