【问题标题】:Bottom layout guide length issue with tabbar after pushing推动后标签栏的底部布局指南长度问题
【发布时间】:2023-03-26 06:28:01
【问题描述】:

所以我的问题与自动布局和底部布局指南有关。

这是应用程序的设计:

UITabBarController

^-- Tab1:以VC1为根的NavigationController

^-- VC2被推并隐藏标签栏(全屏,顶部布局位于导航栏下方,底部布局应为最低像素)。

按下VC2时,底部布局指南在一小段时间内为49点长度,然后为0。

在此期间,我的受限于底部指南的子视图定位不正确。

当指南正确设置为 0 时(由导航控制器本身,我没有关于此的代码),子视图位置就完美了。

这在 iOS 7.x 上不会发生(该应用程序支持 7.0+)...我很确定这是 iOS 8 的错误,我正在寻找解决方法,但我找不到解决此问题的方法。

我试图解决强制导航控制器的视图在视图(Will/Did)LayoutSubviews 中布局的问题,但它没有帮助。

我看到this post 是相关的,但建议的解决方案不起作用。 以模态方式呈现 VC2 可以解决问题,但这是不可接受的。

提前感谢您的帮助,如果您需要更多解释,请告诉我

【问题讨论】:

  • 感谢您的评论,但这与问题无关。
  • 您好,我已经下载了您的演示,发现您的视图控制器中有警告 commin 您设置了底部布局约束。您能否更具体地说明您需要标签栏高度上方的标签正好位于底部?
  • 是的,这是一个错误,它发生在 iOS 7.1 中,当您到达 MoreNavigationController 并选择一个项目时使用 XCode 5.1.1。

标签: ios ios8 autolayout


【解决方案1】:

我在使用 UIPageViewController 时遇到了类似的问题。经过一些初步研究,它似乎确实是一个错误。我设法解决此问题的唯一方法是将子视图固定到超级视图,而不是像这样的底部布局指南。

一旦子视图被固定到父视图上,约束似乎会得到尊重。

希望这会有所帮助。

【讨论】:

  • 将所有约束从底部布局指南移动到超级视图解决了这个问题。在我的真实项目中(不是附加的),我实际上之前尝试过这个,但我只是注意到我的视图的超级视图也被限制在底部布局指南中......感谢您的评论和帮助!
【解决方案2】:

如果您使用的是自动布局,请尝试在 Interface Builder 中取消选中 TabBarController 及其所有 ViewControllers 的“Extend Edges->Under Bottom Bars”设置。

【讨论】:

    【解决方案3】:

    我通过将标签栏半透明设置为否解决了我的问题

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        self.tabBarController.tabBar.translucent = NO;
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        self.tabBarController.tabBar.translucent = self.isTabBarTranslucent;
    }
    

    【讨论】:

    • 我不知道它是如何工作的。我只是从情节提要中取消选中 Translucent 属性,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-15
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多