TableView滚动时NavigationBar颜色异常改变,求UIKit环境下的解决方案
检查导航栏滚动关联设置
UIKit默认会在TableView滚动时调整导航栏的透明度或样式,可通过以下设置禁用自动行为:// 禁止滑动隐藏导航栏 navigationController?.hidesBarsOnSwipe = false // 关闭大标题滚动切换效果(如果使用了大标题) navigationController?.navigationBar.prefersLargeTitles = false navigationItem.largeTitleDisplayMode = .never统一导航栏滚动前后的样式
iOS 13+需同时设置standardAppearance和scrollEdgeAppearance,确保滚动时导航栏背景色、样式一致:let appearance = UINavigationBarAppearance() appearance.backgroundColor = .yourTargetColor // 替换为你需要的颜色 appearance.shadowColor = .clear // 移除底部阴影(可选) navigationController?.navigationBar.standardAppearance = appearance navigationController?.navigationBar.scrollEdgeAppearance = appearance关闭导航栏半透明(若不需要)
半透明导航栏会在滚动时与TableView内容叠加,导致视觉上的颜色异常,可直接关闭:navigationController?.navigationBar.isTranslucent = false关闭后需确保TableView内容不会被导航栏遮挡:
tableView.contentInsetAdjustmentBehavior = .automatic排查滚动代理中的错误修改
如果你实现了UIScrollViewDelegate的scrollViewDidScroll方法,检查是否在其中动态修改了导航栏的颜色、透明度属性,移除这些非预期的代码即可。
内容的提问来源于stack exchange,提问作者Владислав Куликов
相关产品推荐
相关产品推荐

