iOS 14 large-title 导航栏缩小后不返回

iOS 14 large-title navigation bar doesn’t come back after shrinking

我的大标题在滚动时会正常缩小,就像它应该的那样。但是,即使我滚动到顶部,它也不会再次变大。当我第一次构建项目并打开应用程序时,大标题和搜索栏正常显示,但一旦缩小。在我完成应用程序之前它不会回来。它在我的设备上也发生了同样的情况。

我在 tableView 中使用 ViewController,在 navigation title 中使用 searchBar。我的导航栏下面也有tableview header

我的大标题的工作方式:

它的工作方式:

我在导航栏中添加了一个 searchController,但我认为 searchController 不是问题,因为即使我从我的项目中删除搜索栏也会出现同样的问题。此外,我在 GIF 的这两个不同项目中使用相同的代码制作大标题,但一个有效,一个无效。为什么会这样?

我把这个放在 viewDidLoad() .

navigationController?.navigationBar.prefersLargeTitles = true

我也试过:

navigationItem.largeTitleDisplayMode = .always

但是,它没有用。

我也试过放:

navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always

viewWillAppear()中的那两个,但效果不佳。

-编辑-

tableView 也是视图层次结构中的第一个。如果层次结构有问题,请告诉我。

我的文档大纲图片:

可能的问题是您的 tableview 内容高度几乎与屏幕高度相同,因此它无法滚动并以动画方式返回大标题。为此,您可以尝试在 tableview 上始终使用弹跳功能。在 viewDidLoad 中你可以调用

tableView.alwaysBounceVertical = true

如果 tableview 是 viewcontroller 子视图层次结构的第一个视图,这可能会解决您的问题。

我查了一下tableview.alwaysBounceVertical是什么,tableview里面的bounce是什么,我发现bounceOnScroll 属性设置为false,这就是这个问题发生的原因(我猜)。当我滚动到顶部时,large title 再次变大,我在情节提要中检查了 bounce on scroll

此外,my large title 在不将 bounce vertically 属性 设置为 true 的情况下也能正常工作。我尝试将故事板和代码设置为 false。所以问题出在 bounceOnScroll,我猜。

在代码中,放

就可以了
tableview.bounces = true

viewController.

如果除了您设置的标志和 tableView 在视图层次结构中的第一个位置之外,您希望滚动导航栏正常工作,您需要确保 tableView 顶部和底部约束绑定到 superview 。默认情况下,它与不正确的安全区域对齐。