通过Autolayout推动隐藏底栏

时间:2016-02-15 14:17:20

标签: ios objective-c autolayout uitabbarcontroller xcode7

我有一个UITabBarController,其中一个UINavigationController持有UIViewController作为根视图控制器。

点击UIViewController中的某个按钮时,我按下常规聊天窗口UIViewController(使用TableView +输入视图)结束隐藏底部标签栏。 (使用“按下时隐藏底栏”标志)

在故事板中,我向VC添加了一个常规UIView子类,看起来像一个底栏,我使用自动布局将其固定在VC视图的底部。

问题所在 当我按下VC时,此视图需要一秒钟才能固定到底部,看起来自动布局会将其固定到底部,就好像标签栏没有隐藏一样,一秒后它会识别标签栏被隐藏并移动它到视野的真正底部。

有关清晰信息,请查看此屏幕截图

enter image description here

现在我将让你了解表视图的约束。 enter image description here

现在我展示了InputView的约束 enter image description here

我也在添加我的View层次结构......

enter image description here

1 个答案:

答案 0 :(得分:5)

我的项目中有类似的问题。我通过选择我想要锚定到底部的视图(在您的情况下,输入视图),保持Command并选择其超级视图(现在应突出显示两个视图)来解决它。

enter image description here

然后我选择了IB底部的对齐按钮:

enter image description here

并添加了Bottom Edges约束。

我最初使用pin菜单将视图固定到其超级视图,但似乎默认会将其固定到底部布局,这会导致转换过程中出现奇怪的移动。

编辑:

在看到最新截图后,问题可能出在其中一个超级视图中。我假设chatWindowUIView,而您的Scroll View只是水平的。这是你应该检查的内容:

  1. chatWindow固定在scrollView的底部,类似于我上面概述的内容。
  2. scrollView固定在superview上,如上所述。
  3. inputView移出scrollView到根超级视图。然后逐个将其向下移动到当前位置。