【问题标题】:Hide large title when scrolling up向上滚动时隐藏大标题
【发布时间】:2017-07-17 12:28:30
【问题描述】:

我有一个嵌入导航控制器的普通视图控制器。在这个视图控制器中,我有一个使用安全区域约束的表视图。 (我不使用表格视图控制器)

导航控制器设置为首选大标题,并且模式设置为 .always。在 beta 2 中,这工作得很好,所以当我进入标题时,标题很大,当我向下滚动时,它变得很小(就像正常的一样)。但自从 beta 3 以来,这不再起作用了。

任何人都知道如何重新打开它,或者如何让它在我滚动表格视图时变得更小。喜欢所有新 iOS 11 应用程序的行为吗?

或者这是当前版本的 swift 4/iOS 11 中的一个错误,但诸如 messenger 和设置之类的应用程序仍然以这种方式工作。

提前致谢。

【问题讨论】:

    标签: ios swift ios11 xcode9-beta


    【解决方案1】:

    对我来说,如果您将情节提要中的布尔值“Prefers Large Titles”设置为 true,它将保持较大,如果您通过代码打开它,它会按预期工作!

    【讨论】:

    • 这绝对是 iOS 11 中的一个错误,但您的提示对我来说是一种解决方法!谢谢!
    • 在 GM 版本中仍然如此!
    • 我填写了一份错误报告,其中一份被设置为重复,所以他们应该知道。
    【解决方案2】:

    我在这个网站上找到了一个解决方法 基本上,如果 tableView(或具有滚动的元素)不是视图层次结构中的第一个视图,则大标题无法自动隐藏。

    https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

    我在视图上添加了willAppear:

    if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
    } else {
        // Fallback on earlier versions
    }
    

    【讨论】:

    • 我在情节提要上做了这个我附上了两张显示层次结构应该如何的图像,编辑...我添加了用于设置大标题的代码 -
    • @SergioTrejo 但是如何让按钮位于桌子下方?就我而言,我有一个必须在滚动视图下的视图,因为它是背景。谢谢!
    • 谢谢!这就是给我的!
    【解决方案3】:
    (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        if (scrollView.contentOffset.y > 0) { //20
            [self.navigationController.navigationBar setPrefersLargeTitles:NO];
        } else {   
            [self.navigationController.navigationBar setPrefersLargeTitles:YES];
        }    
    }
    

    【讨论】:

      【解决方案4】:

      在 IB 中为您的导航栏选中“Prefers Large Titles”,或使用:

      navigationController?.navigationBar.prefersLargeTitles = true
      

      【讨论】:

      • 是的,所以我这样做了,大标题会显示,但当我向下滚动时不会变小。它总是很大,但是当我向上滚动并位于顶部时,标题变得更大。所以约束也能正常工作,只是从 beta 3 开始,当我向下滚动时它并没有变小。
      【解决方案5】:

      我正在使用程序化布局,但在大标题时遇到了类似问题。我在这里找到了解决方案:https://stackoverflow.com/a/46692583/131378。在viewDidLoad() 中,我不得不将largeTitleDisplayMode 关闭再打开。这是使大标题与滚动一起使用的正确组合:

      self.navigationItem.largeTitleDisplayMode = .never
      self.navigationItem.largeTitleDisplayMode = .always
      

      【讨论】:

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