【问题标题】:NavigationBar height changing on coming back to Portrait orientationNavigationBar 高度在返回纵向方向时发生变化
【发布时间】:2016-02-11 03:04:20
【问题描述】:

我的结构如下:

ContainerView --embed segue--> NavigationController --> UITableViewController A --push segue--> UITableViewController B

这种排列效果很好,但是当我将方向更改为 Landscape 时,点击 A 中的一行将我带到 B,并将方向更改回 Portrait,我的 NavigationBar 高度增加如下:

1) 人像模式,一切都好:

1) 方向改为横向模式,一切正常:

3) 在横向模式下点击一行,一切正常:


4) 回到纵向模式,导航栏比平时高!

我在任何viewDidLoad()viewWillAppear()viewDidAppear() 等中都没有任何代码,这些代码会对布局或约束进行任何更改。在情节提要中,我尝试打开和关闭Adjust ScrollView Insets,但没有任何运气。有什么问题?

更新:如果我不使用ContainerView,则不会发生这种情况。所以这似乎是罪魁祸首。我没有将我自己的类用于 ContainerView 或包含它的视图。它的约束非常简单:SuperView 和底部的前导、尾随空间、从上到下的布局指南和顶部布局指南。这可能是ContainerView 本身的错误吗?

【问题讨论】:

  • 你有没有使用任何约束或AutoLayout?
  • 不在 NavigationBar 上(不确定这是否可能),但对于视图上的其他元素,是的,我有。不过,我对高度进行硬编码没有任何限制。
  • 是的,我也不确定这是否可能,但我只是想考虑一些会影响高度的事情(当然除了简单的 Xcode 错误)。
  • 我也一样,我已经在这工作了一天多,没有任何进展。如果我不改变方向,没有问题,一切都很好。我还确保当方向改变时我不会自己做任何事情..sigh

标签: swift uinavigationbar ios9


【解决方案1】:

好的,所以我弄清楚了问题所在。当我将ContainerView 放入故事板中UIViewControllerView 时,我将ContainerView顶部 边缘与底部 对齐StatusBar 的边缘。这也是我设置约束的方式。这就是问题的根源。一旦我将其更改为ContainerViewStatusBar顶部 边缘对齐,问题就解决了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多