【问题标题】:Hide Bottom Bar When Pushed through Autolayout通过自动布局时隐藏底栏
【发布时间】:2016-02-15 14:17:20
【问题描述】:

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

当点击UIViewController 中的一个按钮时,我会推送一个常规聊天窗口UIViewController(带有 TableView + 输入视图)并隐藏底部标签栏。 (使用“按下时隐藏底栏”标志)

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

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

要获得清晰的信息,请查看此屏幕截图

现在我将告诉你表格视图的约束..

现在我展示了 InputView 的约束

我还添加了我的视图层次结构...

【问题讨论】:

    标签: ios objective-c autolayout uitabbarcontroller xcode7


    【解决方案1】:

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

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

    并添加了Bottom Edges 约束。

    我最初所做的是使用 pin 菜单将视图固定到其父视图,但默认情况下似乎会将其固定到底部布局,这会导致过渡期间出现奇怪的移动。

    编辑:

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

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

    【讨论】:

    • 你能告诉我你的视图层次吗?可能是你的inputView的superview不是根视图,问题在层次较高的地方。
    • 是的,你可以看看视图层次结构@mark...我已经发布了屏幕截图
    • 我添加了一些建议来帮助您调试问题。我的盲目猜测是滚动视图隐含地应用了某种插入来补偿标签栏。
    • 是的@Mark,我完全按照你的解释做了,但我仍然无法弄清楚我在哪里受到打击。我已经上传了带有这个视图控制器的情节提要 [Autolayout]。当这个故事板添加标签栏时,底部栏间隙正在发生......这是链接看看它......dropbox.com/s/zqy1e2tvezbr8hr/Main.storyboard?dl=0
    • 我已经下载了你的故事板。看起来 scrollView 被限制在其父视图的底部布局(这将导致标签栏出现奇怪的过渡)。我在这里对故事板进行了更改:dropbox.com/s/gu0i9l5d7caq5ww/Main-revised.storyboard?dl=0
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多