Xcode14+Swift5下固定导航栏背景色不显示问题求助
解决导航栏颜色仅滚动时显示的问题
问题原因
iOS 13 及以后,UINavigationBar 的外观由 UINavigationBarAppearance 统一管理。你之前使用的 barTintColor、backgroundColor 会被新的外观配置覆盖。未滚动时导航栏采用 scrollEdgeAppearance 配置,滚动后切换为 standardAppearance,两者配置不一致就会出现颜色仅滚动时才显示的情况。
解决方案
创建统一的 UINavigationBarAppearance 实例,同时赋值给导航栏的 standardAppearance 和 scrollEdgeAppearance,确保两种状态下颜色一致。
代码示例
override func viewDidLoad() { super.viewDidLoad() // 创建导航栏外观配置对象 let navBarAppearance = UINavigationBarAppearance() // 设置导航栏背景色 navBarAppearance.backgroundColor = UIColor.flatSkyBlue() // 可选:移除导航栏底部的阴影线 // navBarAppearance.shadowColor = .clear // 将配置应用到导航栏的两种状态 navigationController?.navigationBar.standardAppearance = navBarAppearance navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance // 可选:如果需要完全不透明的导航栏,添加以下设置 // navigationController?.navigationBar.isTranslucent = false }
内容的提问来源于stack exchange,提问作者BurakEryvz
相关产品推荐
相关产品推荐

