仅在 iOS15 中滚动开始时导航栏是透明的

K M*_*K M 10 uinavigationbar ios swift ios15

我一直在寻找不同的解决方案,我不断看到的解决方案是将滚动边缘外观设置为等于标准外观。我也看过这个解决方案。这两种解决方案都不适合我。一旦用户到达可滚动内容的末尾(我认为滚动边缘就是这样),我也没有看到此问题出现。我发现当用户开始在长列表中滚动时就会出现问题。我在下面附上了照片,其中机密数据已被模糊处理。我的应用程序中导航栏看起来正确的唯一位置是在主视图中。我的应用程序架构是主要细节。它在 iOS 14 的所有导航栏中都能完美运行,此问题特定于 iOS 15。

场景 1:主视图控制器列表视图(滚动开始后导航栏看起来正确)

主列表视图非常顶部 主列表视图滚动

场景 2:在 MVC 表格上选择一个项目后(导航栏是透明的,滚动开始后不会模糊)

列表视图非常顶部 列表视图滚动

这是我在故事板中的当前视图,其中包含标准边缘和滚动边缘的默认值。 故事板视图

除了将滚动边缘外观设置为等于标准之外,我还尝试过一些方法:

  1. 取消选中滚动边缘外观中的透明
  2. 更改模糊样式(标准边缘和滚动边缘)
  3. 设置背景颜色

小智 11

在iOS 15中,UIKit将scrollEdgeAppearance的使用扩展到所有导航栏,默认情况下它会产生透明背景。设置scrollEdgeAppearance如下代码。它对我有用。

if #available(iOS 15, *) {
        let appearance = UINavigationBarAppearance()
        appearance.configureWithOpaqueBackground()
        appearance.backgroundColor = < your tint color >
        navigationController?.navigationBar.standardAppearance = appearance;
        navigationController?.navigationBar.scrollEdgeAppearance = navigationController?.navigationBar.standardAppearance
    } 
Run Code Online (Sandbox Code Playgroud)


use*_*201 0

我也遇到了同样的问题。我\xe2\x80\x99注意到,如果我屏蔽掉设置背景颜色的代码(通过ZStack或.background(Color)),透明度问题就消失了。\n就我而言,我需要设置背景颜色并制定了一种解决方法,将导航栏保留为白色,而不是辅助系统背景颜色。

\n