使用prefersLargeTitles和UITableView进行平滑滚动

Jak*_*lář 4 scroll uinavigationbar uitableview ios ios11

我在使用prefersLargeTitles和添加时遇到滚动问题UITableView.

如果我prefersLargeTitles在导航控制器中设置并且其根目录UITableViewController很好,滚动导航大标题的工作方式与我们在系统应用程序中看到的方式相同(在iOS 11+中).

问题

在此输入图像描述

但是,如果我使用a UIViewControllerUITableView在其中添加a ,则滚动似乎采取不同的行为.导航栏比我实际滚动更快/更快.只要我滚动到一个只触发它的位置,它就会隐藏/显示大标题,所以我最终会有完全不同的感觉.

Jak*_*lář 12

原来,布局导致了这个问题.

如果UITableView使用顶部到:安全区域约束(除了底部,前导和尾随Safe Area)并且未在条形下扩展,则会出现问题.

但是,如果我使用扩展布局,将顶部对齐superview,我仍然可以使用UITableView并获得大标题及其导航栏的正确行为.

edgesForExtendedLayout = .top
extendedLayoutIncludesOpaqueBars = true
Run Code Online (Sandbox Code Playgroud)

或者使用导航栏isTranslucent = true也可以扩展它.