iPhone X安全区域顶部指南延迟计算/错误对齐

时间:2017-10-24 02:13:22

标签: ios safearealayoutguide

我在我的应用程序中使用自定义启动动画。我已经更新了我的应用以使用Safe Area而不是传统的布局指南。

在过渡动画开始时,我在目标视图控制器中获取UIView的帧,与顶部安全区域布局指南对齐,如下所示:

Top Alignment Constraint

我为从屏幕中心到该位置的相同视图的快照设置动画。

在iPhone X(不是任何其他设备)上出现问题,UIView实际上在其最终位置上方动画,使动画看起来很滞后。

问题是我在动画期间(在屏幕上显示之前)从视图中获取的帧不是视图的正确最终帧。

似乎安全区域顶部布局指南实际上尚未设置在该点,将我的视图约束到屏幕的顶部,这是我在动画期间读取的帧。

有人知道这是否是一个错误,或者如果没有,在安全区域顶部布局指南在屏幕上显示之前,如何计算我的uiview的实际正确框架?

Here is an example project showing the issue I'm having。请在iPhone X模拟器上运行。

Here is a video showing the issue I'm experiencing on the iPhone X Simulator

1 个答案:

答案 0 :(得分:3)

我有同样的问题并通过为视图的顶部约束添加@IBOutlet来解决它我动画并使用safeAreaInsets来计算正确的高度:

@IBOutlet var wifiImageViewTopConstraint: NSLayoutConstraint!

...

view.safeAreaInsets.top + wifiImageViewTopConstraint.constant

所以在我的情况下,安全区域的顶部常数是50 - 对于iPhone X,它将是44 + 50 = 94 - 对于其他手机,它将是20 + 50 = 70