SwiftUI 视觉模糊效果,背景清晰

问题描述 投票:0回答:1

有什么办法可以拥有

.background(.ultraThinMaterial)

在 SwiftUI 中没有背景颜色?它似乎有一些浅白色暗淡的背景,因为如果它只是单独模糊背景,那么只有内容滚动到后面时,它不应该显示任何颜色。

iOS模拟器:

期望的结果:

ios swift swiftui blur ios16
1个回答
0
投票

如果将材质后面的内容的背景设置得更暗,则几乎可以消除由材质效果引起的背景较浅的阴影。换句话说,您可以通过在该区域设置较暗的背景来补偿较浅的阴影。

背景变暗是针对深色模式运行时的情况。在浅色模式下,它的工作方式相反,材质后面的内容需要变得更轻。这些组合效果很好:

  • 在深色模式下,

    Color(white: 0.15)
    的主背景,材质后面有
    Color.black

  • 在灯光模式下,

    Color(white: 0.91)
    的主背景,材质后面有
    Color.white

像这样:

@Environment(\.colorScheme) private var colorScheme: ColorScheme
let headerHeight: CGFloat = 175

var body: some View {
    ZStack(alignment: .top) {
        Color.clear

        content
            .background(alignment: .top) {
                Color(white: colorScheme == .dark ? 0.0 : 1.0)
                    .ignoresSafeArea()
                    .frame(height: headerHeight, alignment: .top)
            }

        header
            .frame(height: headerHeight, alignment: .top)
            .background(.ultraThinMaterial)
    }
    .background(Color(white: colorScheme == .dark ? 0.15 : 0.91))
}

MaterialScreens

© www.soinside.com 2019 - 2024. All rights reserved.