向上滚动时隐藏大标题

问题描述 投票:11回答:5

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

导航控制器设置为偏好大标题,并且模式设置为.always。在beta 2中,这种方法效果很好,因此当我进入标题时,标题变大了;当我向下滚动时,标题变小了(就像普通的一样)。但是从beta 3开始,它不再起作用。

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

或者这是swift 4 / iOS 11当前版本中的错误,但是像Messenger和设置这样的应用程序仍然可以这种方式工作。

提前感谢。

ios swift ios11 xcode9-beta
5个回答
20
投票

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


7
投票

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

Example that will NOT workExample that will work

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

我在视图上添加的内容将出现:

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

1
投票
(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > 0) { //20
        [self.navigationController.navigationBar setPrefersLargeTitles:NO];
    } else {   
        [self.navigationController.navigationBar setPrefersLargeTitles:YES];
    }    
}

0
投票

在IB中的导航栏中选中“ 喜欢大标题”,或使用:

navigationController?.navigationBar.prefersLargeTitles = true

0
投票

我正在使用程序化布局,并且遇到了类似的标题较大的问题。我在这里找到了解决方案:https://stackoverflow.com/a/46692583/131378。在viewDidLoad()中,我不得不重新打开largeTitleDisplayMode。这是正确的组合,使大标题可以滚动:

self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.