【问题标题】:view jumps when navigation bar hidden隐藏导航栏时视图跳转
【发布时间】:2011-06-04 07:22:19
【问题描述】:

在我们的应用程序中,当其中一个视图被推送到导航控制器时,导航栏可见 5 秒,然后我们将 navigationBarHidden 设置为 TRUE。稍后,如果用户点击屏幕,我们将切换 navigationBarHidden 值。但是当导航栏 id 隐藏或可见时,视图会针对这些操作分别上下跳跃。

当栏被隐藏或可见时,有什么方法可以防止视图跳转?

感谢和问候, 赫塔尔

【问题讨论】:

    标签: iphone ipad uiview uinavigationcontroller uinavigationbar


    【解决方案1】:

    您使用的是setNavigationBarHidden: 还是setNavigationBarHidden:animated:

    试试[navigationController setNavigationBarHidden:NO animated:YES];

    如果问题是视图改变大小,那么您必须在视图本身中考虑这一点,即它必须能够处理两种大小。

    【讨论】:

    • 动画似乎可以在 iPhone 上运行,但不能在 iPad 上运行。你知道为什么吗?
    【解决方案2】:

    我也有同样的问题。在我的项目中,这是因为视图是滚动视图。如果你的视图是滚动视图或表格视图,你可以试试这个:

    我将以下代码添加到控制器中。

    self.automaticallyAdjustsScrollViewInsets = NO;
    

    希望对你有帮助。

    【讨论】:

    • 谢谢。它可以帮助我查看集合视图:)
    【解决方案3】:

    我意识到这是一个古老的对话,但我在 iOS 11 中遇到了一些以前工作代码的问题,这是我在 Google 中不断获得的第一个结果。

    就我而言,我有一个带有导航控制器的视图控制器。该视图包含一个滚动视图。

    如果滚动视图全部放大,滚动位置会在导航栏隐藏/显示动画后跳转。

    设置 self.automaticallyAdjustsScrollViewInsets = NO/false 不起作用(它在 iOS 10 中起作用)。

    经过一番折腾,我意识到 UIScrollView 中有一个名为 contentInsetAdjustmentBehavior 的新属性。

    我必须将此设置为“从不”以获得所需的效果(即显示/隐藏导航栏时滚动视图位置不会改变)。

    在 swift 中它看起来像这样: self.scrollView?.contentInsetAdjustmentBehavior = .never

    【讨论】:

    • 你是如何让滚动视图延伸到导航栏顶部的(所以当导航栏隐藏时滚动视图调整大小不会导致跳转)?
    • 我的内置在情节提要中,在我的例子中,我检查了视图控制器的“扩展边缘”设置的所有 3 个复选框:在顶部、底部和不透明边缘下。
    【解决方案4】:

    在 SwiftUI 中使用 hidden() 方法,创建一个标题很重要,即使是一个空标题。如果您使用 NavigationLink,请为两个视图应用方法以避免“跳跃”效果。

     .navigationBarTitle("")   
     .navigationBarHidden(true)
     .labelsHidden()
    

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2015-11-14
      • 2012-07-07
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多