是因为preferLargeTitles属性会导致导航栏标题的大小发生变化,从而影响到滚动视图的布局。当滚动视图中添加了UIRefreshControl时,由于导航栏标题的大小变化,可能会导致滚动视图的内容偏移量计算错误,从而出现奇怪的跳转现象。
为了解决这个问题,可以尝试以下几种方法:
navigationController?.navigationBar.prefersLargeTitles = false
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if #available(iOS 11.0, *) {
let offsetY = scrollView.contentOffset.y
let navigationBarHeight = navigationController?.navigationBar.frame.height ?? 0
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let contentInsetTop = navigationBarHeight + statusBarHeight
scrollView.contentInset = UIEdgeInsets(top: contentInsetTop, left: 0, bottom: 0, right: 0)
scrollView.contentOffset = CGPoint(x: 0, y: offsetY - contentInsetTop)
}
}
总结起来,当启用preferLargeTitles属性时,滚动视图中添加UIRefreshControl可能会导致布局问题,可以通过禁用preferLargeTitles属性、调整滚动视图的内容偏移量或使用其他方式实现下拉刷新来解决该问题。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云