iOS从深色模式切换到浅色模式时 uni-app原生导航返回按钮颜色没有变化

iOS从深色模式切换到浅色模式时 uni-app原生导航返回按钮颜色没有变化

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

操作步骤:

从浅色模式切换深色模式,再从深色模式切换到浅色模式

预期结果:

原生导航文字以及返回图标颜色随切换都变化

实际结果:

从深色模式切换到浅色模式时,文字颜色变化了,但是返图标没有变化

bug描述:

深色模式是跟随系统的,ios从浅色模式切换到深色模式时,原生导航颜色都变化了,再从深色模式切换到浅色模式后,原生导航上文字颜色变了,但是返回按钮颜色没有变化

更多关于iOS从深色模式切换到浅色模式时 uni-app原生导航返回按钮颜色没有变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已解决!使用Api重新设置一下

更多关于iOS从深色模式切换到浅色模式时 uni-app原生导航返回按钮颜色没有变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个iOS系统下uni-app原生导航栏在深色/浅色模式切换时的渲染问题。返回图标颜色未及时更新的原因可能是系统未正确触发导航栏按钮的样式重绘。

建议尝试以下解决方案:

  1. 强制刷新导航栏:在onThemeChange监听中调用uni.hideTabBar()uni.showTabBar()(即使未使用tabbar),可能触发导航栏重绘。

  2. 动态设置导航栏样式:通过uni.setNavigationBarColor在主题切换时主动设置返回按钮颜色:

onThemeChange(() => {
  const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches
  uni.setNavigationBarColor({
    frontColor: isDark ? '#ffffff' : '#000000',
    backgroundColor: isDark ? '#000000' : '#ffffff'
  })
})
  1. 使用自定义导航栏:考虑使用"navigationStyle": "custom"关闭原生导航栏,自行实现返回按钮,可完全控制样式变化。

  2. 延迟设置:在主题切换事件中添加短暂延迟确保样式生效:

setTimeout(() => {
  uni.setNavigationBarColor({ ... })
}, 100)
回到顶部