向上滚动时隐藏大标题

时间:2017-07-17 12:28:31

标签: ios swift ios11 xcode9-beta

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

导航控制器设置为首选大型标题,模式设置为.always。在测试版2中,这非常有效,所以当我进入标题时,标题很大,当我向下滚动它变得很小时(就像正常情况一样)。但是从beta 3开始,这已不再适用了。

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

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

提前致谢。

5 个答案:

答案 0 :(得分:20)

对我来说,如果你设置布尔值"喜欢大标题"在故事板中为true它会保持很大,如果你通过代码打开它,它按预期工作!

答案 1 :(得分:7)

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

Example that will NOT work Example that will work

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
    }

答案 2 :(得分:1)

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

答案 3 :(得分:0)

检查" 喜欢大型标题"对于IB中的导航栏,或使用:

navigationController?.navigationBar.prefersLargeTitles = true

答案 4 :(得分:0)

我正在使用程序化布局,并且遇到了类似的大标题问题。我在这里找到了解决方案:Googling。在last system error: 11中,我不得不重新打开viewDidLoad()。这是正确的组合,可以使大标题与滚动一起工作:

largeTitleDisplayMode