在 iOS11 中对细节进行动画处理时,UINavigationController 顶部出现奇怪的填充

Weird padding at top UINavigationController while animating to detail in iOS11

我在这里发帖是因为我完全迷失了这一点。 我在整个网络上进行了搜索,自己尝试了很多东西,并针对这个错误搜索了数周,但我找不到它。

所以自从 iOS 11(在 iOS 10 上不会发生),每次我按下一个按钮激活 "show" 在 UINavigationController 中继续 动画在顶部显示一些奇怪的填充 。 动画结束后,此填充消失。

我把superview的backgroundcolor改成了红色,你看到的space确实是superview本身,所以我猜是由于某种原因,整个 UITableView 被向下移动,尽管我不确定这里的确切原因是什么。 (我正在使用故事板和 AutoLayout 约束)

我注意到的另一件事是,您在 iPhone X 上看到的 spacing/padding 与其他设备 不同(我的猜测是与顶部(非)安全区域的高度相同?同样,不确定。

我认为没有必要在此处提供代码,因为我真的不知道是哪一部分导致了此行为(并且由于某些原因我无法分享很多代码..)。 任何关于如何解决此问题的 suggestions/help 都将不胜感激!

这里有一些例子:

iPhone X 运行 iOS 11.1(也发生在 11.0)

iPhone 8 gif

编辑:我应该补充一些我已经尝试过的事情:

因此,正如 Spenser-Arn 所建议的那样,我研究了约束和安全区域,结果证明,安全区域是导致问题的地方。

希望这能像帮助我一样帮助其他人,非常感谢 Spenser-Arn!