You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除推送视图时导航栏上方的透明区域?

导航栏背景色设置无效的解决方案

1. 关闭导航栏半透明属性

iOS默认导航栏为半透明状态,会导致背景色显示异常,先关闭该属性:

// Swift
navigationController?.navigationBar.isTranslucent = false
// Objective-C
self.navigationController.navigationBar.translucent = NO;

2. 适配iOS版本设置导航栏背景

iOS 13及以上(推荐使用UINavigationBarAppearance)

// Swift
let navAppearance = UINavigationBarAppearance()
navAppearance.backgroundColor = .systemBlue // 替换为你需要的颜色
navigationController?.navigationBar.standardAppearance = navAppearance
navigationController?.navigationBar.scrollEdgeAppearance = navAppearance // 适配滚动到顶部的样式
// Objective-C
UINavigationBarAppearance *navAppearance = [[UINavigationBarAppearance alloc] init];
navAppearance.backgroundColor = [UIColor systemBlueColor];
self.navigationController.navigationBar.standardAppearance = navAppearance;
self.navigationController.navigationBar.scrollEdgeAppearance = navAppearance;

iOS 13以下版本

// Swift
navigationController?.navigationBar.barTintColor = .systemBlue
// Objective-C
self.navigationController.navigationBar.barTintColor = [UIColor systemBlueColor];

3. 排查全局或自定义导航栏配置

检查项目中是否存在AppDelegate/SceneDelegate里的全局导航栏样式设置,或者自定义的UINavigationBar子类,这些配置会覆盖当前页面的设置,需要调整冲突的代码。

4. 同步导航控制器视图背景色

避免滚动页面时露出不协调的背景色,同步设置导航控制器的视图背景:

// Swift
navigationController?.view.backgroundColor = .systemBlue
// Objective-C
self.navigationController.view.backgroundColor = [UIColor systemBlueColor];

内容的提问来源于stack exchange,提问作者Halpo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:34:57