防止UINavigationController在iOS 11中使用偏移量向上过渡动画?

时间:2017-08-16 13:40:46

标签: ios uinavigationcontroller ios11

我使用iOS 9目标将应用从iOS 10更新到iOS 11,当涉及导航栏时,会在每个segue动画上发生这种情况。

动画以低于其应有的高度的小偏移开始,然后在视图完成动画时移动到适当的高度。

我没有对导航控制器做任何特别的事情,它发生在应用程序中的每一个。如果我以编程方式隐藏导航栏,则转换会正常进行动画处理。

2 个答案:

答案 0 :(得分:5)

在UINavigationController中将tableView.contentInsetAdjustmentBehavior设置为.never可以解决问题。

编辑:实际上,更好的解决方案是激活TableViewController的 Under Opaque Bars 选项。

否则垂直滚动条将在横向模式下位于iPhone X缺口后面。这对我有用,因为我使用不透明的条纹。我不知道如果你使用半透明条会发生什么。

enter image description here

Prince在Apple Developer Forums

上描述了原始解决方案
  

经过一些研究......我发现在iOS 11中不推荐automaticallyAdjustsScrollViewInsets,现在我们要在UIScrollView类型视图中使用contentInsetAdjustmentBehavior。将contentInsetAdjustmentBehavior设置为.never并且如果UINavigationBar是透明的,那么视图在条形图下面就不会发生'UINavigationController翻译上滑问题'。 (因此,执行automaticAdjustsScrollViewInsets`的新方法)

     

这对于Storyboard用户来说并不好,因为这必须在代码中完成。

答案 1 :(得分:0)

在iOS11中不推荐使用顶部/底部布局指南,我认为您的问题与此相关。所以你可以改变我认为的约束。

了解更多here