使用prefersLargeTitles和UITableView实现流畅的滚动

7
我在使用prefersLargeTitles并添加UITableView时,遇到了滚动问题。
如果我在导航控制器中设置prefersLargeTitles,并且其根视图是UITableViewController,那么一切都很好,在iOS 11+系统应用程序中可以看到导航大标题的滚动方式。
问题出现了。

enter image description here

然而,如果我使用UIViewController并在其中添加一个UITableView,滚动似乎会表现出不同的行为。导航栏移动得比我实际滚动更快/更多。每当我滚动到触发它的位置时,它只是隐藏/显示大标题,因此最终产生完全不同的感觉。
1个回答

15

结果发现布局引起了这个问题。

如果UITableView使用顶部对齐:安全区域约束条件(除了底部、前导和尾随到安全区域之外)且不延伸到栏下面,则会出现此问题。

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

edgesForExtendedLayout = .top
extendedLayoutIncludesOpaqueBars = true

或者使用导航栏的 isTranslucent = true,它也会将其扩展。


你能详细说明一下你的解决方案吗?你所说的“自动调整大小”是什么意思?是完全不使用自动布局吗?还是混合使用自动布局和自动调整大小掩码?谢谢! - JonEasy
当您使用tableViewController并将navBar的isTranslucent设置为false时,还会出现这种情况。那个答案也可以解决它。谢谢。 - crashoverride777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接